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

Java - Zapis danych w pliku

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
386 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,260 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,260 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,260 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 328 wizyt
pytanie zadane 25 lutego 2021 w Java przez Hubert731 Obywatel (1,650 p.)
0 głosów
1 odpowiedź 889 wizyt
pytanie zadane 16 września 2019 w Java przez Qeliasz Użytkownik (510 p.)
0 głosów
0 odpowiedzi 1,036 wizyt
pytanie zadane 24 listopada 2018 w Java przez mn130496 Gaduła (3,530 p.)

93,173 zapytań

142,184 odpowiedzi

321,967 komentarzy

62,502 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1157p. - dia-Chann
  2. 1139p. - Łukasz Piwowar
  3. 1131p. - CC PL
  4. 1126p. - Łukasz Eckert
  5. 1118p. - Tomasz Bielak
  6. 1104p. - Michal Drewniak
  7. 1083p. - Marcin Putra
  8. 1078p. - rucin93
  9. 1071p. - rafalszastok
  10. 1054p. - Adrian Wieprzkowicz
  11. 1047p. - Piotr Aleksandrowicz
  12. 1037p. - Michał Telesz
  13. 1005p. - ssynowiec
  14. 992p. - Dominik Łempicki (kapitan)
  15. 968p. - Anonim 3619784
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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...