若通过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...

面试题 相关文章推荐
比较基础的php面试题及答案-编程题
Oct 14 面试题
比较基础的php面试题及答案-填空题
Apr 26 面试题
请说出你所知道的线程同步的方法
Apr 19 面试题
如何获取某个日期是当月的最后一天
Dec 05 面试题
新电JAVA笔试题目
Aug 31 面试题
Android面试宝典
Aug 06 面试题
什么是数据抽象
Nov 26 面试题
写一个在SQL Server创建表的SQL语句
Mar 10 面试题
请解释virtual关键字的含义
Jun 17 面试题
一些网络技术方面的面试题
May 01 面试题
nohup的用法
Nov 26 面试题
某科技软件测试面试题
May 19 面试题
线程问题: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
Windows中安装Apache2和PHP4权威指南
2006/11/18 PHP
adodb与adodb_lite之比较
2006/12/31 PHP
PHP日期时间函数的高级应用技巧
2009/05/16 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
JsDom 编程小结
2011/08/09 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
js实现百度登录框鼠标拖拽效果
2017/03/07 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
Redux实现组合计数器的示例代码
2018/07/04 Javascript
解决vue项目使用font-awesome,build后路径的问题
2018/09/01 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
python多线程http下载实现示例
2013/12/30 Python
深入理解Django中内置的用户认证
2017/10/06 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
30行Python代码实现高分辨率图像导航的方法
2020/05/22 Python
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
静态变量和实例变量的区别
2015/07/07 面试题
人民教师的自我评价分享
2014/02/21 职场文书
学校百日安全活动总结
2015/05/07 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
MySQL 全文检索的使用示例
2021/06/07 MySQL