若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?


Posted in 面试题 onOctober 17, 2016
使用缺省的serializetion的实现时,一个ObjectOutputStream的构造和一个ObjectInputStream的构造必须一一对应。ObjectOutputStream的构造函数会向输出流中写入一个标识头,而ObjectInputStream会首先读入这个标识头。因此,多次以追加方式向一个文件中写入object时,该文件将会包含多个标识头。所以用ObjectInputStream来deserialize这个ObjectOutputStream时,将产生StreamCorruptedException。
一种解决方法是可以构造一个ObjectOutputStream的子类,并覆盖writeStreamHeader()方法。被覆盖后的writeStreamHeader()方法应判断是否为首次向文件中写入object?若是,则调用super.writeStreamHeader();若否,即以追加方式写入object时,则应调用ObjectOutputStream.reset()方法。

Tags in this post...

面试题 相关文章推荐
如何获取某个日期是当月的最后一天
Dec 05 面试题
中软Java笔试题
Nov 11 面试题
C面试题
Oct 08 面试题
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
Feb 15 面试题
经典c++面试题四
May 14 面试题
如何在存储过程中使用Loop
Jan 05 面试题
最新远光软件笔试题面试题内容
Nov 08 面试题
开放系统互连参考模型
Jun 29 面试题
Linux文件操作命令都有哪些
Jul 23 面试题
Linux如何为某个操作添加别名
Feb 05 面试题
mysql有关权限的表都有哪几个
Apr 22 面试题
四种会话跟踪技术
May 20 面试题
线程问题:wait()方法是定义在哪个类里面
Jul 07 #面试题
如果重写了对象的equals()方法,需要考虑什么
Nov 02 #面试题
为什么Runtime.exec(“ls”)没有任何输出?
Oct 03 #面试题
如何从一个文件档案的尾端新增记录
Dec 02 #面试题
构造方法和其他方法的区别
Apr 26 #面试题
Java程序开发中如何应用线程
Mar 03 #面试题
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
Jun 20 #面试题
You might like
PHP合并静态文件详解
2014/11/14 PHP
PHP中文编码小技巧
2014/12/25 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
javascript 二分法(数组array)
2010/04/24 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
浅谈jquery中next与siblings的区别
2016/10/27 Javascript
js模糊查询实例分享
2016/12/26 Javascript
原生JS轮播图插件
2017/02/09 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
在vue中根据光标的显示与消失实现下拉列表
2019/09/29 Javascript
Python实现抓取网页并且解析的实例
2014/09/20 Python
Python提取网页中超链接的方法
2016/09/18 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
用Eclipse写python程序
2018/02/10 Python
TensorFlow的权值更新方法
2018/06/14 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
2019/06/17 Python
python调用webservice接口的实现
2019/07/12 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
澳大利亚连衣裙和女装在线:Esther
2017/11/11 全球购物
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
执行总经理岗位职责
2014/02/03 职场文书
初中同学会活动方案
2014/08/22 职场文书
机关干部三严三实心得体会
2014/10/13 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
幼师个人总结范文
2015/02/28 职场文书