既存のオブジェクト ファイルへの追加
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 サイトの他の関連記事を参照してください。