若通过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开发的一般流程
Aug 13 面试题
编码实现字符串转整型的函数
Jun 02 面试题
SQL语言面试题
Aug 27 面试题
如何用SQL语句进行模糊查找
Sep 25 面试题
网络方面基础面试题
Nov 16 面试题
上海雨人软件技术开发有限公司测试题
Jul 14 面试题
.net C#面试题
Aug 28 面试题
linux面试题参考答案(5)
Sep 01 面试题
Linux如何压缩可执行文件
Mar 27 面试题
腾讯公司的一个sql题
Jan 22 面试题
Java面试题:说出如下代码的执行结果
Oct 30 面试题
与C++相比,Java中的数组有什么不同
Mar 25 面试题
线程问题: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/07/17 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
重定向实现代码
2006/11/20 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
2015/04/29 Javascript
浅析nodejs实现Websocket的数据接收与发送
2015/11/19 NodeJs
js控住DOM实现发布微博效果
2016/08/30 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
javascript实现下雨效果
2017/03/27 Javascript
JavaScript实现时间表动态效果
2017/07/15 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
vue-cli3全面配置详解
2018/11/14 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
解决pyecharts在jupyter notebook中使用报错问题
2020/04/23 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
使用K.function()调试keras操作
2020/06/17 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
CSS3 实现的加载动画
2020/12/07 HTML / CSS
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
购房协议书范本
2014/04/11 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
租车协议书范本2014
2014/11/17 职场文书