Zapis/Odczyt z pliku txt i binarnego dwiema metodami

0

Witam, mam napisać program umożliwiający przechowywanie listy 10 studentów w pliku txt, pliku binarnego (DataOutputStream) oraz (ObjectOutputStream). Moj problem polega na tym, że jeżeli zapisauje np. najpierw do txt a potem do binarnego i odczytuje tekstowy a potem binarny to w pliku binarnym jest wszytko razy 2?

 case 8:
    PrintWriter zapis = new PrintWriter("tekstowa_lista.txt");
     for (d=0;d<ile ;d++)
         {
             if(s[d]!=null)
             {   
                 zapis.println(s[d].imie);
                 zapis.println(s[d].nazwisko);
                 zapis.println(s[d].indeks);
             	}
             }zapis.close();menu();break; 
   //wczytywanie danych z pliku i wyswietlenie ich w konsoli
 case 9:
     
        File file = new File("tekstowa_lista.txt");
        Scanner in = new Scanner(file);

        while(in.hasNext())
        {
           String imie = in.next();
           String nazwisko = in.next();
           String indeks = in.next();
           System.out.println(imie+" "+nazwisko+" "+indeks);
        }menu();break;
        
 //Zapisz listê studentów do pliku binarnego, 
 //u¿ywaj¹c DataOutputStream (zapisujemy ka¿de z pól oddzielnie)
 case 10:
     
     DataOutputStream out = null;
        try {
          out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(
                  "binarny_DataOutput.bin")));
                     
            for (d=0;d<ile;d++)
            {
                if(s[d]!=null)
                {  
                    out.writeUTF(s[d].imie);
                    out.writeUTF(s[d].nazwisko);
                    out.writeFloat(s[d].indeks);
                       }
                    }
           // mo¿na zapisywaæ pêtl¹ for w  tablicy studentów
          //for (int i = 0; i < studenci.length; i++) {
          // 
         //   out.writeUTF(nazwisko);
            //out.writeInt(wiek);
         // }
        } finally {  out.close();     }menu();break;
      
 //Odczytaj listê studentów z pliku binarnego, 
 //u¿ywaj¹c DataOutputStream    
 case 11:
     
     DataInputStream wejscie = null;

        try {
          wejscie = new DataInputStream(new BufferedInputStream(new FileInputStream(
                  "binarny_DataOutput.bin")));

          try {
                      while(true)
                      {
                          
                        s[ile].imie = wejscie.readUTF();
                        s[ile].nazwisko = wejscie.readUTF();
                        s[ile].indeks = (int) wejscie.readFloat();
                        ile++;
                       }
          } catch (EOFException e) {  System.out.println(e);       }
       
        } finally {      wejscie.close();        }
     
for (d=0;d<ile;d++)
     {
         if(s[d] != null)
         {  s[d].wyswietl();  }
         else {System.out.println("\tKOMUNIKAT: Studentow nie ma w bazie!");}
         }menu();break; 
         
0

@Shalom zadał Ci lekcje: pętle. A ty zamiast pętli wywołujesz menu() z menu(). Doczekasz się StockEverflowError. W pytaniu piszesz o DataObjectStream, w zamieszczonym kodzie nie ma DataObjectStream. Może korzystając z DataObjectStream dopisujesz do pliku?

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