Deserialisierung in ein HashSet

AvS

Erfahrenes Mitglied
Hi !

Ich brauche für ein Programmierprojekt eine Datei, die Objekte eines bestimmten Typs persistent in einer Datei speichert und bei Programmstart diese Objekte wieder in eine HashSet speichert. Die Serialiserung funktioniert soweit, aber ich habe nun das Problem, dass bei der Deserialisierung nur ein Objekt eingelesen wird.

Java:
	public static void loadWL() throws IOException, ClassNotFoundException
	{
		FileInputStream fis = new FileInputStream("whitelist.txt");
		ObjectInputStream ois = new ObjectInputStream(fis);
		word.add(ois);
	}

Gibt es für die Streams keine Möglichkeit alle Objekte in der Datei einzulesen ? So vielleicht ?
Java:
while(ois.available())
word.add(ois);
 
Ich würde dir nicht empfehlen das ganze über Serialisierung zu lösen. Speichere deine Daten lieber in XML. Da bist du dann flexibler wenn sich die Klassenstruktur mal ändert.
 
Okay, hab ich zwar noch nie gemacht aber klingt vernünftig ! Welche Klassen benötige ich dafür ?

Edit : Ich denke mal XMLDecoder und XMLEncoder :)
 
Zuletzt bearbeitet:
Sorry für Doppelposting, aber ein append = true über den FileOutputStream ist für XML-Dateien anscheined nicht mögich, richtig ?
 
Es geht nicht zwingend um XML. Ich brauche einen Weg um Objekte mit lediglich zwei Attributen (beides Strings) so abzuspeichern, dass die Daten erstens persistent sind und zweitens beliebig erweitert werden können. Ich hatte angefangen mit ObjectOutputStream, da hat die Deserialisierung in ein HashSet aber nicht so funktioniert wie ich das wollte. Daraufhin habe ich diesen Thread eröffnet und bin nun mit XML dran. Der XMLEncoder überschreibt aber immer die vorherige XML-Datei, was nicht akzeptabel für mich ist.
 
Es geht nicht um einfaches XML sondern um Speichern/Laden von Objekten in/nach XML. Dafür eignene sich Objektmappingframeworks wie XStream.
 
Java:
FileOutputStream fos = new FileOutputStream("whitelist.ser.xml", true);
XStream xs = new XStream();
xs.toXML(this, fos);

Funktioniert leider auch nicht.
Ich verzweifle langsam...Gibt es keine gescheite Möglichkeit, um Objekte in einer Datei zu speichern, die auch später noch erweitert werden kann ?
 
Du kannst ein XML nicht sinnvoll erweitern. Du hast ja Start und EndTags.

Aber du kannst die alte Datei wieder Laden, die Daten hinzufügen und wieder speichern.
 

Neue Beiträge

Zurück