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

面试题 相关文章推荐
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
Mar 25 面试题
联强国际笔试题面试题
Jul 10 面试题
main 函数执行以前,还会执行什么代码
Apr 17 面试题
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
Feb 10 面试题
请写出char *p与"零值"比较的if语句
Sep 24 面试题
C#笔试题集合
Jun 21 面试题
比较一下entity bean和session bean
Dec 27 面试题
AJax面试题
Nov 25 面试题
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
May 30 面试题
Structs界面控制层技术
Oct 11 面试题
四种会话跟踪技术
May 20 面试题
Java面试题冲刺第十五天--设计模式
Aug 07 面试题
线程问题: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小偷的核心程序
2007/04/09 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
Vue.js学习示例分享
2017/02/05 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
2017/08/18 Javascript
vue2.0 elementUI制作面包屑导航栏
2018/02/22 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
详解新手使用vue-router传参时注意事项
2019/06/06 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
2020/02/09 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
Python requests上传文件实现步骤
2020/09/15 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
青年创业培训欢迎词
2014/01/10 职场文书
大学生活自我评价
2014/04/09 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis
cypress测试本地web应用
2022/06/01 Javascript