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

面试题 相关文章推荐
包装类的功能、种类、常用方法
Jan 27 面试题
C/C++有关内存的思考题
Dec 04 面试题
枚举和一组预处理的#define有什么不同
Sep 21 面试题
创建索引时需要注意的事项
May 13 面试题
视图的作用
Dec 19 面试题
什么是事务?事务有哪些性质?
Mar 11 面试题
网络安全方面的面试题
Jan 07 面试题
C#面试题
May 06 面试题
软件测试企业面试试卷
Jul 13 面试题
DOM和JQuery对象有什么区别
Nov 11 面试题
介绍一下UNIX启动过程
Nov 14 面试题
介绍一下javax.servlet.Servlet接口及其主要方法
Nov 30 面试题
线程问题: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生成随机密码的三种方法小结
2010/09/04 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
javascript中HTMLDOM操作详解
2014/12/11 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
JavaScript 函数的执行过程
2016/05/09 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
2016/08/25 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
对python中Json与object转化的方法详解
2018/12/31 Python
详解Python_shutil模块
2019/03/15 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
使用K.function()调试keras操作
2020/06/17 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
敏捷开发的主要原则都有哪些
2015/04/26 面试题
保护环境建议书100字
2014/05/13 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
西安大雁塔导游词
2015/02/10 职场文书
法律意见书范文
2015/05/20 职场文书
2015年中秋节主持词
2015/07/30 职场文书
大学生活委员竞选稿
2015/11/21 职场文书
2019银行员工个人工作自我鉴定
2019/06/27 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android