ObjectOutputStream へのオブジェクトの追加
ObjectOutputStream はオブジェクトをシリアル化する便利な方法を提供しますが、既存のストリームへの追加はサポートしていません。この制限が発生する一般的なシナリオは、新しいオブジェクトが作成されるたびに追加される、ファイル内のオブジェクトのリストを維持しようとする場合です。
この課題を克服するには、カスタム ソリューションが必要です。 1 つの方法は、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(); } }
このクラスを使用するには、履歴ファイルが存在するかどうかを確認してください。存在する場合は、AppendingObjectOutputStream をインスタンス化してオブジェクトを追加します。それ以外の場合は、標準の ObjectOutputStream をインスタンス化して、ヘッダー付きの新しいファイルを作成します。
writeStreamHeader メソッドをオーバーライドすることで、AppendingObjectOutputStream を使用して既存のファイルにオブジェクトを追加できるようになり、オブジェクトの永続的なリストを維持する方法が提供されます。既存のデータを上書きします。
以上が既存の ObjectOutputStream にオブジェクトを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。