2011-07-12 25 views
1

我正在使用ObjectOutputStream將數據寫入文件。我有一個實現Serializable接口的類Data。這個類有4個實例變量。我成功地將數據寫入文件並讀取它。如何在java中替換文件的內容?

當用戶更改該類的任何一個實例變量時,我必須再次將所有4個變量寫入該文件。有沒有這樣的解決方案,而不是寫所有四個變量的文件,我只是替換已更改的變量的數據?

下面是一些代碼:

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

}

+1

不會。這意味着「hacking」對象流。我建議不要去那裏。 – Bohemian

+2

你是否需要存儲序列化的對象?爲什麼不只是映射到數據庫或鍵值存儲? – Joel

回答

0

如果只序列化您的類的實例,你可以只選擇你自己的二進制表示和實現方法來存儲/加載對象。但是,如果您將此「Data」類用作例如Java的收藏和被序列化那些你需要的部分是自定義的序列,看看這裏:

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

在標題:

Customize the Default Protocol 
1

而不是使用Serializable你可以看看Externalizable這會讓你控制你編寫序列化數據的方式 - 所以你可以事實上如果你想說你的對象序列化爲CSV格式。如果你將它和diff機制結合起來(比較從前一個狀態生成的行,那麼從當前狀態開始你可以使用RandomAccessFile並且只寫入差異。