我使用ObjectOutputStream将数据写入文件。我有一个实现Serializable接口的类Data。这个类有4个实例变量。我成功地将数据写入文件并读取它。
当用户更改此类的任何一个实例变量时,我必须再次将所有4个变量写入文件。有没有这样的解决方案,而不是将所有四个变量写入文件,我只是替换已更改的变量的数据?
以下是一些代码:
public class Data implements Serializable{
int i, j;
String s1, s2;
}
答案 0 :(得分:1)
而不是使用Serializable
,您可以查看Externalizable
,这样可以控制您编写序列化数据的方式 - 所以如果您想要将对象序列化为CSV-喜欢格式。如果你将它与diff机制结合起来(比较从先前状态生成的行,那么从当前状态开始,你可以使用RandomAccessFile
并只写出差异。
答案 1 :(得分:0)
如果您只是序列化类的实例,则可以选择自己的二进制表示并实现存储/加载对象的方法。但是,如果您使用此“数据”类作为例如Java集合并被序列化为您需要的一部分是自定义序列化,请看这里:
http://java.sun.com/developer/technicalArticles/Programming/serialization/
标题下:
Customize the Default Protocol