Ich versuche, einige Objekte aus einer Datei zu lesen. Der Code funktioniert für die erste Iteration und bei der zweiten Iteration gibt es eine StreamCorruptedException. Hier ist mein Code,java.io.StreamCorruptedException: ungültiger Typcode: AC
private ArrayList<Cheque> cheques = null;
ObjectInputStream ois = null;
try {
cheques = new ArrayList<Cheque>(4);
ois = new ObjectInputStream(new FileInputStream("src\\easycheque\\data\\Templates.dat"));
Object o = null;
try {
o = ois.readObject();
int i=1;
while (o != null) {
cheques.add((Cheque) o);
System.out.println(i++); // prints the number of the iteration
o = ois.readObject(); // exception occurs here
}
} catch (ClassNotFoundException ex) {// for ois readObject()
Logger.getLogger(TemplateReader.class.getName()).log(Level.SEVERE, null, ex);
} catch (EOFException ex) {// for ois readObject()
// end of the file reached stop reading
System.out.println("ois closed");
ois.close();
}
} catch (IOException ex) {
Logger.getLogger(TemplateReader.class.getName()).log(Level.SEVERE, null, ex);
}
unten ist ein Teil der Ausnahme. Vor dem Druck dieses ‚1‘ gedruckt wird (wegen der sout)
SEVERE: null
java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1356)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
kann ich nicht herausfinden, warum dies geschieht. In einigen Forenposts stieß ich darauf, dass dies passiert, wenn Sie während des Schreibens eine Datei anhängen. Ist das der wahre Grund? (Ich lege während der Schreibphase an die Datei an). Wenn ja, gibt es eine geeignete Methode zum Lesen einer angehängten Datei?
hier ist der Code i
ObjectOutputStream objectOut = new ObjectOutputStream(new FileOutputStream("src\\easycheque\\data\\templates.dat", true));
objectOut.writeObject(cheque);
objectOut.flush();
objectOut.close();
Schreiben in die Datei zu schreiben, verwenden nicht ein iterativer Prozess.
Danke :)
Möchten Sie auch ein Beispiel Snippet Schreiben in die Datei der Lage sein, hinzufügen? –
Kann Objektgröße eine Sache sein? Jedes Objekt, das ich schreibe, hat ein Bildobjekt (Icon) – Niroshan
Es ist nicht korrekt zu loopen, bis 'readObject()' null zurückgibt. Am Ende des Streams wird das nicht getan, und es kann jedes Mal, wenn Sie eine Null schreiben, es tun. Sie müssen eine Schleife ausführen, bis "EOFException" ausgelöst wird. – EJP