• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java - Zapis danych w pliku

Hosting forpsi easy 1 pln
0 głosów
302 wizyt
pytanie zadane 14 kwietnia 2018 w Java przez FroGiS Użytkownik (810 p.)

Siemka jestem nowy w Javie (uczę się dopiero tydzień) ale to mi nie przeszkodziło aby robić swój pierwszy projekt, niestety w moim pierwszym projekcie natknąłem się na problem a mianowicie nie wiem jak zapisać w pliku tekstowym informacje od użytkownika że jakbym włączył program i zapisywał informacje to zapisywało mi pod poprzednimi linijkami póki co mam coś takiego

public void CreateNPC() {
    System.out.println("Nazwa NPC");
    String HeroName= sc.nextLine();
    System.out.println("Poziom NPC");
    int HeroLevel = sc.nextInt();
    System.out.println("Rzadkość NPC");
    String HeroRarity = sc.nextLine();

    String fileName = "Npc.txt";
    try(
            FileWriter fileWriter = new FileWriter(fileName);
            BufferedWriter writer = new BufferedWriter(fileWriter)
    ){
        File file = new File(fileName);
        Scanner scan = new Scanner(file);
        while (scan.hasNextLine()){
            System.out.println("Działa");
            writer.newLine();
        } 
        writer.write(HeroRarity + " " + HeroName + " " + HeroLevel);


    } catch(IOException e) {
        e.printStackTrace();
    }

}

ale pętla while zwraca fałsz mimo że są już 2 linijki zapisane

komentarz 14 kwietnia 2018 przez Ghost Bywalec (2,930 p.)
Może mógłbyś wczytać obecne informacje z pliku do np. ArrayList do której później dodajesz nowe informacje i wtedy zapisujesz.
komentarz 14 kwietnia 2018 przez FroGiS Użytkownik (810 p.)
A mniej więcej jakby miało to wyglądać ? tak jak mówiłem jestem kompletnie w tym zielony
komentarz 14 kwietnia 2018 przez mbabane Szeryf (79,280 p.)

@FroGiS,

Chcesz krótko mówiąc dopisywać do pliku dane?

Np. 

Zawartość przed uruchomieniem programu:

linia1
linia2

Zawartość po uruchomieniu:

linia1
linia2
linia3
komentarz 14 kwietnia 2018 przez FroGiS Użytkownik (810 p.)
edycja 14 kwietnia 2018 przez FroGiS
Tak dokładnie bo jak to robię to mi pisze ciągle na 1 linijce a resztę informacji usuwa

1 odpowiedź

+1 głos
odpowiedź 14 kwietnia 2018 przez mbabane Szeryf (79,280 p.)
wybrane 14 kwietnia 2018 przez FroGiS
 
Najlepsza

Konstruktor klasy FileWriter ma jeszcze taką postać:

FileWriter(String path, boolean apppend)

Czyli w Twoim kodzie wystarczy zmienić jedną linijkę na:

FileWriter fileWriter = new FileWriter(fileName, true);

 

komentarz 14 kwietnia 2018 przez FroGiS Użytkownik (810 p.)
Tak pętla zaczęła wyświetlać true ale problem teraz taki że nie przerywa (w konsoli jest wysyp słowa "Działa") a chodziło o to aby sprawdzało czy jest zapisana linijka jeśli tak to przechodzi do następnej i gdy linijka jest pusta to pisze w niej dane
komentarz 14 kwietnia 2018 przez mbabane Szeryf (79,280 p.)

To może zwykły if wystarczy:

if ( scan.hasNextLine() ){
   System.out.println("Działa");
   writer.newLine();
}

Ewentualnie opisz co ma to dokładniej robić (z przykładem działania jeśli się da) i będziemy radzić.

komentarz 14 kwietnia 2018 przez FroGiS Użytkownik (810 p.)
Dzięki już wszystko działa ;)

Podobne pytania

0 głosów
0 odpowiedzi 228 wizyt
pytanie zadane 25 lutego 2021 w Java przez Hubert731 Obywatel (1,650 p.)
0 głosów
1 odpowiedź 668 wizyt
pytanie zadane 16 września 2019 w Java przez Qeliasz Użytkownik (510 p.)
0 głosów
0 odpowiedzi 817 wizyt
pytanie zadane 24 listopada 2018 w Java przez mn130496 Gaduła (3,530 p.)

92,111 zapytań

140,769 odpowiedzi

317,755 komentarzy

61,432 pasjonatów

Advent of Code 2023

Top 15 użytkowników

  1. 801p. - Łukasz Eckert
  2. 793p. - Dawid128
  3. 779p. - CC PL
  4. 767p. - TheLukaszNs
  5. 754p. - Eryk Andrzejewski
  6. 749p. - nidomika
  7. 749p. - Michal Drewniak
  8. 746p. - Mikbac
  9. 726p. - Arkadiusz Waluk
  10. 724p. - rucin93
  11. 722p. - sefirek
  12. 715p. - adrian17
  13. 713p. - Henry Saele
  14. 688p. - the Bielsky
  15. 687p. - Adrian Wieprzkowicz
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Uwaga - w dniach od 02.12 do 08.12 trwają Mikołajki (książki drukowane mają rabat -35%, ebooki do -45%). Zaś dodatkowy, specjalny kod zniżkowy: HELMIKOLAJ-10 dla naszych Widzów zapewni Wam oszczędność -10zł dla zamówień powyżej 70zł! Warto korzystać!

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...