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

Java - Zapis danych w pliku

Object Storage Arubacloud
0 głosów
312 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 300 wizyt
pytanie zadane 25 lutego 2021 w Java przez Hubert731 Obywatel (1,650 p.)
0 głosów
1 odpowiedź 746 wizyt
pytanie zadane 16 września 2019 w Java przez Qeliasz Użytkownik (510 p.)
0 głosów
0 odpowiedzi 880 wizyt
pytanie zadane 24 listopada 2018 w Java przez mn130496 Gaduła (3,530 p.)

92,565 zapytań

141,416 odpowiedzi

319,599 komentarzy

61,950 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...