ObjectOutputStream / objekte anhängen

  • Themenstarter Themenstarter Sören
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

Sören

Gast
Hi an alle und danke schonmal fürs lesen

ich schreib in meinem Programm ein Objekt mithilfe eines ObjectoutputStreams in eine datei:
Code:
                        FileOutputStream toFile=new FileOutputStream(new File("programme.tv"),true);
			ObjectOutputStream objectOut=new ObjectOutputStream(toFile);
die datei soll als cache benutz werden um die daten nicht beim nächsten starten wieder per internet nachladen zu müssen
Ich will also jedesmal wenn ich was ausdem internet lad, die Daten (unschwer zu erkennen: Fernsehprogramm eines Tages) an die Datei anhängen
wenn ich das aber mit dem oberen Stream mache kommt beim einlesen mit
Code:
                        FileInputStream fromFile=new FileInputStream(new File("programme.tv"));
			ObjectInputStream objectIn=new ObjectInputStream(fromFile);
			Programme p;
			while((p=(Programme)objectIn.readObject())!=null)
				list.add(p);

kommt nach dem ersten eingelesen Objekt :
Code:
java.io.StreamCorruptedException: invalid type code: AC
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readObject(Unknown Source)
	at info.ConnectTvtoday.<init>(ConnectTvtoday.java:77)

muss ich, bevor ich an eine schon existente datei was anhänge, den Outputstream beim anlegen der datei serialisieren, dann immer zuerst den laden und was anhängen oder gehts auch einfacher?

was ich auch noch wissen wollte is obs was geschickteres das dateiende festzustellen als durch abfangen der EOFException

Mit freundlichen Grüßen
Sören
 
meines Wissens nach ist es nicht möglich, an eine ObjectOutputStream-Datei etwas anzuhängen,
du müsstest die alten Objekte einlesen und mit den neuen zusammen neu speichern,
oder mehrere Dateien verwenden,
oder ein anderes eigenes Format definieren wie XML und in eine einface Textdatei speichern,

eine Alternative zu EOFException kenne ich auch noch nicht
 
danke für den vorschlag, ich habs jetzt so gemacht, dass ich immer eine ArrayList<Programme> speicher und einles und beim FileOutputStream append=false gesetz hab
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben