黑马程序员技术交流社区
标题:
IO一个小问题
[打印本页]
作者:
臧盼
时间:
2012-12-25 18:43
标题:
IO一个小问题
若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException? 如何解决?
作者:
Kevin123
时间:
2012-12-25 23:33
使用缺省的serializetion的实现时,一个ObjectOutputStream的构造和一个ObjectInputStream的构造必须一一对应。O bjectOutputStream的构造函数会向输出流中写入一个标识头,而ObjectInputStream会首先读入这个标识头。因此,多次以追加方式向一个文件 中写入object时,该文件将会包含多个标识头。所以用ObjectInputStream来deserialize这个ObjectOutputStream时,将产 生StreamCorruptedException。
一种解决方法是可以构造一个ObjectOutputStream的子类,并覆盖writeStreamHeader()方法。被覆盖后的writeStreamHea der()方法应判断是否为首次向文件中写入object?若是,则调用super.writeStreamHeader();若否,即以追加方式写入object时,则 应调用ObjectOutputStream.reset()方法
希望能帮到楼主
作者:
清水
时间:
2012-12-26 17:07
楼上答得真好,学了一招!
作者:
yuchen208
时间:
2012-12-26 19:10
ObjectOutputStream输出对象,该对象必须实现Serializable
是对象在流的传输中按照某种循序进行
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2