Hallo
Ich habe mal wieder ein Problem... oder ich seh den Wald vor lauter Bäumen nicht mehr...
Ich serialisiere und speichere Objekte in eine Datei (tasks.xml).
Jetzt möchte ich diese wieder deserialisieren und in eine ArrayList<Task> speichern. Dazu verwende ich folgende Methode:
Ich weiss, dass mit readObject() automatisch immer das nächste Objekt gelesen wird, nur: wie weiss ich wann ich das letzte Objekt gelesen habe?
Mein Ansatz ist mit einer while()-Schleife... aber vllt geht es auch anders. Ich bekomme jetzt immer eine EOFException:
Wäre super wenn mir da jemand weiterhelfen könnte
Ich habe mal wieder ein Problem... oder ich seh den Wald vor lauter Bäumen nicht mehr...
Ich serialisiere und speichere Objekte in eine Datei (tasks.xml).
Jetzt möchte ich diese wieder deserialisieren und in eine ArrayList<Task> speichern. Dazu verwende ich folgende Methode:
Java:
public void loadTasks() {
FileTools.checkAndCreateFile("tasks.xml");
ObjectInputStream objIn;
try {
objIn = new ObjectInputStream(new BufferedInputStream(new FileInputStream("tasks.xml")));
while(true) {
tasks.add((Task) objIn.readObject());
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Ich weiss, dass mit readObject() automatisch immer das nächste Objekt gelesen wird, nur: wie weiss ich wann ich das letzte Objekt gelesen habe?
Mein Ansatz ist mit einer while()-Schleife... aber vllt geht es auch anders. Ich bekomme jetzt immer eine EOFException:
Code:
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
Wäre super wenn mir da jemand weiterhelfen könnte