Heim > Java > javaLernprogramm > Können Sie in Java an vorhandene ObjectOutputStreams anhängen?

Können Sie in Java an vorhandene ObjectOutputStreams anhängen?

Patricia Arquette
Freigeben: 2024-12-16 20:19:17
Original
147 Leute haben es durchsucht

Can You Append to Existing ObjectOutputStreams in Java?

Anhängen an vorhandene Objektströme

Es stellt sich die Frage, ob das Anhängen an einen ObjectOutputStream machbar ist. Ein Versuch, eine Liste von Objekten anzuhängen, schlägt beim Lesen zeitweise fehl, was zu einer java.io.StreamCorruptedException führt.

Die typische Verwendung umfasst:

FileOutputStream fos = new FileOutputStream
           (preferences.getAppDataLocation() + "history" , true);
ObjectOutputStream out = new ObjectOutputStream(fos);

out.writeObject( new Stuff(stuff) );
out.close();
Nach dem Login kopieren

Anschließend beim Lesen:

FileInputStream fis = new FileInputStream
        ( preferences.getAppDataLocation() + "history");
ObjectInputStream in = new ObjectInputStream(fis);    

try{
    while(true)
        history.add((Stuff) in.readObject());
}catch( Exception e ) { 
    System.out.println( e.toString() );
}
Nach dem Login kopieren

Das Unterklassifizieren von ObjectOutputStream und das Überschreiben der writeStreamHeader-Methode liefert die Lösung:

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 line added after another question
    // showed a problem with the original
    reset();
  }

}
Nach dem Login kopieren

Instanziieren Sie einen anfügbaren Stream, wenn die Verlaufsdatei vorhanden ist (ohne Header anhängen) oder einen Originalstream, wenn er nicht existiert (mit Header erstellen).

Das obige ist der detaillierte Inhalt vonKönnen Sie in Java an vorhandene ObjectOutputStreams 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