2011-07-12 22 views
1

ObjectOutputStreamを使用してファイルにデータを書き込みます。私はSerializableインターフェイスを実装するクラスDataを持っています。このクラスには4つのインスタンス変数があります。私は正常にファイルにデータを書き込むことができ、またそれを読むことができます。Javaのファイルの内容を置き換える方法は?

ユーザーがこのクラスのインスタンス変数のいずれかを変更すると、ファイルに4つの変数すべてをもう一度書き込む必要があります。 4つの変数をすべてファイルに書き込むのではなく、変更された変数のデータを置き換えるだけの解決法がありますか?あなただけのあなたは自分自身のバイナリ表現を選択し、/ロードオブジェクトを格納するためのメソッドを実装することができ、あなたのクラスのインスタンスをシリアル化している場合

public class Data implements Serializable{ 
    int i, j; 
    String s1, s2; 

}

+1

いいえこれは、オブジェクトストリームを「ハッキングする」ことを意味します。 – Bohemian

+2

シリアル化されたオブジェクトを格納する必要はありますか?データベースまたはキー値ストアにマップするだけではどうですか。 – Joel

答えて

0

:ここ

は、コードの一部です。ただし、この「データ」クラスをたとえばの一部として使用している場合は、 Javaの-コレクション、あなたが必要なもの、それらの一部は、カスタムのシリアル化であるとしてシリアライズされます、こちらをご覧持っている:見出しの下

http://java.sun.com/developer/technicalArticles/Programming/serialization/ 

を:

Customize the Default Protocol 
1

よりもむしろSerializableを使用して、あなたがExternalizableれる見ることができますシリアライズされたデータを書く方法を制御することができます。実際にオブジェクトをCSV形式のようにシリアル化することができます。これをdiffメカニズムと組み合わせると(以前の状態から生成された行と、現在の状態からの行を比較してRandomAccessFileを使用して差異を書き込むことができます)。

関連する問題