2016-05-03 2 views
-1

Ich habe mehrere Objekte in Teacher ArrayList gespeichert und ich versuche, es zu deserialisieren, aber es zeigt den Wert Müll.Deserialisieren einer ArrayList mit mehreren Objekten

public void Write(){ 
    try{ 
     FileOutputStream fs=new FileOutputStream("S.txt"); 
     ObjectOutputStream os=new ObjectOutputStream(fs); 
     os.writeObject(teachers); 

     os.close(); 
    }catch(Exception e) 
    {System.out.println(e);} 

} 


public void Read(){ 
    try 
    { 
     FileInputStream fis = new FileInputStream("E:\\Books\\OOP\\Teacher\\S.txt"); 
     ObjectInputStream ois = new ObjectInputStream(fis); 
     teachers = (ArrayList<Teacher>) ois.readObject(); 
     for(Teacher i: teachers){ 
      System.out.println(i.toString()); 
     } 
     ois.close(); 
     fis.close(); 
    }catch(IOException ioe){ 
     System.out.println("Error"); 
     return; 
    }catch(ClassNotFoundException c){ 
     System.out.println("Class not found"); 

     return; 
    } 
} 
+0

Was meinen Sie mit "Müllwert"? Überschreibt Ihre 'Teacher'-Klasse' toString'? – Mena

+0

etwas wie * &% # &&^$ 5 –

+0

Kommt das vom Lesen Ihrer Datei direkt? Obwohl es sich um eine ".txt" -Datei handelt, wird sie in Binärform geschrieben. – Mena

Antwort

0

Sie verwenden Objektströme, die Ihre serialisierte Objekte in binär bestehen, unabhängig von der Erweiterung der Datei (die „.txt“ hier zweideutig sein geschieht was darauf hindeutet, dass es sich um eine Textdatei sein wird, wenn geschrieben).

Sie können nichts Menschenähnliches aus Ihrer Datei mit einem Texteditor anzeigen, wenn die geschriebenen Daten binäre Daten sind.

Wenn Ihre „garbage Werte“ auch gedruckt werden, wenn Sie Ihre List<Teacher> auf Deserialisierung laufen, es bedeutet, dass:

  1. (De-) Serialisierung tatsächlich erfolgreich war (dh Sie Ihre List<Teacher> geschrieben haben Datei und abgerufen it)
  2. Ihre Teacher Klasse nicht toString richtig außer Kraft setzen könnte oder überhaupt, so dass er druckt die [email protected] Notation von Object#toString, wenn an das System Ausgabedruckstrom zugeführt
Verwandte Themen