Heim > Java > javaLernprogramm > Wie kann ich Objekte an einen vorhandenen ObjectOutputStream in Java anhängen?

Wie kann ich Objekte an einen vorhandenen ObjectOutputStream in Java anhängen?

Mary-Kate Olsen
Freigeben: 2024-12-20 09:06:13
Original
565 Leute haben es durchsucht

How Can I Append Objects to an Existing ObjectOutputStream in Java?

Anhängen an einen ObjectOutputStream: Eine Lösung

In Java wird das Anhängen an einen ObjectOutputStream nicht grundsätzlich unterstützt. Der Versuch, mit dem Standard-ObjectOutputStream an eine vorhandene Datei anzuhängen, führt beim Lesen zur StreamCorruptedException.

Um diese Einschränkung zu überwinden, kann man eine Unterklasse von ObjectOutputStream erstellen und deren writeStreamHeader-Methode überschreiben. Der geänderte writeStreamHeader sollte keinen Header schreiben, sondern stattdessen den Stream zurücksetzen, wenn das ursprüngliche Objekt geschrieben wird.

Der folgende Code demonstriert die Erstellung einer AppendingObjectOutputStream-Klasse:

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:
    this.reset();
  }

}
Nach dem Login kopieren

Um diese Klasse zu verwenden, Stellen Sie fest, ob die Zielverlaufsdatei vorhanden ist. Wenn dies der Fall ist, instanziieren Sie den AppendingObjectOutputStream, um Daten anzuhängen, ohne einen Header zu schreiben. Wenn die Datei nicht vorhanden ist, instanziieren Sie den Standard-ObjectOutputStream, um einen Header zu schreiben.

// Check if history file exists
if (fileExists) {
  // Appendable stream
  ObjectOutputStream out = new AppendingObjectOutputStream(new FileOutputStream(filePath, true));
} else {
  // Standard stream
  ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filePath));
}
Nach dem Login kopieren

Mithilfe des AppendingObjectOutputStream können Objekte erfolgreich an eine vorhandene Verlaufsdatei angehängt werden, um sicherzustellen, dass alle geschriebenen Objekte gelesen werden können in der richtigen Reihenfolge.

Das obige ist der detaillierte Inhalt vonWie kann ich Objekte an einen vorhandenen ObjectOutputStream in Java anhängen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage