ホームページ >Java >&#&チュートリアル >Java で既存のオブジェクト ファイルにオブジェクトを追加するにはどうすればよいですか?

Java で既存のオブジェクト ファイルにオブジェクトを追加するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-14 18:43:12760ブラウズ

How Can I Append Objects to an Existing Object File in Java?

既存のオブジェクト ファイルへの追加

Java では、ObjectOutputStream を使用してオブジェクトをシリアル化してファイルに書き込むことができます。ただし、デフォルトでは、このストリームは既存のファイルへの新しいオブジェクトの追加をサポートしていません。このトピックでは、既存の ObjectOutputStream にデータを追加するソリューションについて説明します。

既存のファイルに追加するには、ヘッダーの書き込みを避けるために、ObjectOutputStream の writeStreamHeader() メソッドをオーバーライドする必要があります。これを行うカスタム AppendingObjectOutputStream クラスは次のとおりです。

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();
  }

}

このクラスを使用して既存のファイルにオブジェクトを追加するには、ストリームを作成する前にファイルが存在するかどうかを確認します。

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();

For追加されたオブジェクトを読み取るには、通常どおり ObjectInputStream を使用します。ファイルからオブジェクトを読み取るときに StreamCorruptedException 例外が発生しなくなりました。

以上がJava で既存のオブジェクト ファイルにオブジェクトを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。