Anhängen an eine vorhandene Objektdatei
In Java können Sie mit ObjectOutputStream Objekte serialisieren und in eine Datei schreiben. Allerdings unterstützt dieser Stream standardmäßig nicht das Anhängen neuer Objekte an eine vorhandene Datei. In diesem Thema wird eine Lösung zum Anhängen von Daten an einen vorhandenen ObjectOutputStream untersucht.
Um an eine vorhandene Datei anzuhängen, muss die writeStreamHeader()-Methode von ObjectOutputStream überschrieben werden, um das Schreiben eines Headers zu vermeiden. Hier ist eine benutzerdefinierte AppendingObjectOutputStream-Klasse, die Folgendes tut:
public class AppendingObjectOutputStream extends ObjectOutputStream { public AppendingObjectOutputStream(OutputStream out) throws IOException { super(out); } @Override protected void writeStreamHeader() throws IOException { // do not write a header, but reset: reset(); } }
Um diese Klasse zum Anhängen von Objekten an eine vorhandene Datei zu verwenden, prüfen Sie, ob die Datei vorhanden ist, bevor Sie den Stream erstellen:
FileOutputStream fos = null; ObjectOutputStream out = null; File file = new File(preferences.getAppDataLocation() + "history"); if (file.exists()) { // Append to existing file fos = new FileOutputStream(file, true); out = new AppendingObjectOutputStream(fos); } else { // Create new file with header fos = new FileOutputStream(file); out = new ObjectOutputStream(fos); } // Append objects to the file out.writeObject(new Stuff(stuff)); out.close();
Für Um die angehängten Objekte zu lesen, verwenden Sie wie gewohnt einen ObjectInputStream. Die StreamCorruptedException-Ausnahme würde beim Lesen von Objekten aus der Datei nicht mehr auftreten.
Das obige ist der detaillierte Inhalt vonWie kann ich Objekte an eine vorhandene Objektdatei in Java anhängen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!