您的位置:首页 > 移动开发 > Objective-C

通过ObjectOutputStream向一个文件中多次以追加方式写入object的解决方案

2009-05-26 13:05 246 查看
使用缺省的serializetion的实现时,一个ObjectOutputStream的构造和一个ObjectInputStream的构造必须一一对应。ObjectOutputStream的构造函数会向输出流中写入一个标识头,而ObjectInputStream会首先读入这个标识头。

因此,多次以追加方式向一个文件中写入object时,该文件将会包含多个标识头。所以用ObjectInputStream来deserialize这个ObjectOutputStream时,将产生StreamCorruptedException。一种解决方法是可以构造一个ObjectOutputStream的子类,并覆盖writeStreamHeader()方法。

被覆盖后的writeStreamHeader()方法应判断是否为首次向文件中写入object,则调用super.writeStreamHeader();若否,即以追加方式写入object时,则应调用ObjectOutputStream.reset()方法。

自己重写一个类继承ObjectOutputStream来成生对象输出流

]import java.io.*;
public class MyObjectOutputStream extends ObjectOutputStream {
public MyObjectOutputStream(OutputStream out) throws IOException {
super(out);
}
protected void writeStreamHeader()throws IOException{
return; //不写入头部
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐