如何在java中替换文件的内容?

时间:2011-07-12 10:05:24

标签: java file serialization file-io

我使用ObjectOutputStream将数据写入文件。我有一个实现Serializable接口的类Data。这个类有4个实例变量。我成功地将数据写入文件并读取它。

当用户更改此类的任何一个实例变量时,我必须再次将所有4个变量写入文件。有没有这样的解决方案,而不是将所有四个变量写入文件,我只是替换已更改的变量的数据?

以下是一些代码:

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

}

2 个答案:

答案 0 :(得分:1)

而不是使用Serializable,您可以查看Externalizable,这样可以控制您编写序列化数据的方式 - 所以如果您想要将对象序列化为CSV-喜欢格式。如果你将它与diff机制结合起来(比较从先前状态生成的行,那么从当前状态开始,你可以使用RandomAccessFile并只写出差异。

答案 1 :(得分:0)

如果您只是序列化类的实例,则可以选择自己的二进制表示并实现存储/加载对象的方法。但是,如果您使用此“数据”类作为例如Java集合并被序列化为您需要的一部分是自定义序列化,请看这里:

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

标题下:

Customize the Default Protocol