Zapisywanie/dopisywanie do pliku tekstowego

0

Witam.
mam do napiasnia program w którym stworze klase student która składa sie z składowych Imie Nazwisko, indeks, gdzie indeks jest odzielna klasa skladajaca sie z 5 przedmiotow.
nastepnie kazdego studenta mam zapisac do pliku w nowym wierszu.
problem polega na tym że nadpisuje mi danych, a niektórych mam wrażenie że w ogole nie wpisuje.
oto kod z klasy Indeks zapisujący dane do pliku:

public void zapisz()throws FileNotFoundException,IOException{
        FileWriter plik=new FileWriter("F:\\plikizjavy\\lab5zad2.txt",true);
        PrintWriter zapis=new PrintWriter(plik);
        for(int i=0;i<2;i++){
        zapis.print(przedmioty[i].getnazwa()+": "+przedmioty[i].getocena()+", ");
        }
        zapis.println();
        zapis.close();
    }

To natosmiast metody z klasy Student:
metoda tworząca plik:

   private void utworzplik(){
        File plik = new File("F:\\plikizjavy\\lab5zad2.txt");
        if( plik.isFile() == true){
            System.out.println("plik istnieje");
        }
        else{
            try{
                boolean b = plik.createNewFile();
            }
            catch(IOException e){
                System.out.println("Nie można utworzyć pliku");
            }
        }
    }

metoda zapisująca dane do pliku:

  public void zapisz()throws FileNotFoundException,IOException{
     FileWriter plik=new FileWriter("F:\\plikizjavy\\lab5zad2.txt");
       utworzplik();
          
        PrintWriter zapisz=new PrintWriter(plik);
        zapisz.print("Student: "+imie+" "+nazwisko);
        zapisz.print(" oceny: ");
        indeks.zapisz();
        zapisz.close();
    }

i To main w ktorym wywoluje te metody:

 public static void main(String[] args) {
       Student Kuba=new Student();
      
       Kuba.ustaw();
       try{
       Kuba.zapisz();   
       }
       catch(FileNotFoundException e){
           System.out.print(e);
       }
       catch(IOException e){
           System.out.println(e);
       }
       
    }

dla przykładowo wprowadzonych danych:

Jan Kowalski matematyka 4 angielski 3
Przemyslaw Kowal francuski 3 fizyka 4

Wynik w pliku tekstowym to:

"Student Jan Kowalski Oceny:"

ktoś by mógł mi wyjaśnić co ja własciwie robie źle?

1

Poczytaj o append w klasie PrintWriter.

A tak przy okazji:
FileWriter plik=new FileWriter("F:\plikizjavy\lab5zad2.txt"); - otwierasz jakiś plik, ale tworzysz go linijkę niżej (https://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html)
utworzplik(); - wywołujesz inną metodę z miejsca, która coś tam robi akurat na tym samym pliku, ale nie wiesz że to ten sam plik co powyżej, bo metoda nie przyjmuje argumentu, tylko ma osobno zdefiniowaną ścieżkę (pogwałcenie DRY); jeśli utworzplik się nie powiedzie, to reszta kodu i tak będzie się wykonywać normalnym tokiem, co może doprowadzić do wyjątków w trudnych do przewidzenia miejscach.
...
ind.zapisz(); - tu wywołujesz coś gdzieś, nie wiadomo co to ind, nie wiadomo jak to jest powiązane ze zmienną plik

Mieszasz polski z angielskim, masz bardzo słabą konwencję nazewniczą (utworzplik), formatowanie kodu jest kiepskie.

0

ind to miałbyć indeks (zapomnialem się przy wrzucaniu tematu a edycja tematu musiała się nie powieść.)

Bardzo możliwe że idzie mi kiepsko z tego względu że jeszcze nie przyzwyczaiłem się do tej formy nauki na studiach. pierwszy raz spotykam się z tym że bez żadnych wyjaśnień muszę nauczyć się od podstaw(nawet jak uruchomić kompilator) wszystkiego sam.

Polski z angielski mieszam co jest głupie, ale dlatego że myślałem że program będzie służył mi tylko do nauki i nie spodziewałem się że fragmenty kodu bęe publikował na forum.

dzięki za tą informacje żeby poczytać append w klasie PrintWriter

1 użytkowników online, w tym zalogowanych: 0, gości: 1