Literatur

Anmerkungen zu Streams

Die Verwendung von Streams ist sehr wichtig und wird sehr häufig verwendet, um in Java Dateien ein- bzw. auszulesen. Dabei gibt es jedoch ein paar Dinge, die Sie beachten sollten:

Sie dürfen keine Klassen modifzieren, wenn Sie Objekte dieser Klasse in einer Datei gespeichert haben. Es dürfen weder Attribute noch Methoden hinzugefügt oder entfernt werden. Auch eine Namensänderung eines Attributes oder einer Methode sollte nicht durchgeführt würden, denn sonst sind die zuvor geschriebenen Objekte nicht mehr verwendbar. 

Müssen Sie die Klasse um jeden Preis ändern, erstellen Sie parallel eine neue Klasse bzw. leiten Sie diese von der ersten Klasse ab. Dies ermöglicht das Auslesen mit der alten Klasse und eine leichtere Überführung in die neue Klasse. Anschließend sollten Sie sich einen neuen Datenbestand mit der neuen Klasse anlegen. Vergessen Sie aber nicht den alten Datenbestand anschließend entweder zu archivieren oder zu beseitigen.

Denke Sie auch daran, dass Attribute, die mit dem Keyword transient gekennzeichnet sind, nicht serialisiert (in einen Stream geschrieben) werden können.

Sie können aber auch Einfluss auf die Serialisierung nehmen. Dazu müssen Sie anstatt das Interface Serializable das Interface Externalizable implementieren. Dann müssen Sie folgende Methoden implementieren.

public abstract void writeExternal (ObjectOutput out) throws IOException
public abstract void readExternal (ObjectInput in) throws IOException, ClassNotFoundException

In diesen beiden Methoden schreiben Sie dann Anweisungen, wie die entsprechende Klasse serialisiert werden soll (z.B. Reihenfolge der Attribute und Methoden verändern).