ObjectOutputStream 多次写同一个文件后,读取出错解决办法
来源:互联网 发布:.net和java的区别 编辑:程序博客网 时间:2024/05/15 13:00
流对象ObjectOutputStream每次写入数据时,默认情况都会添加头信息,实际上,头信息只需要写一次,之后不需要。
解决方案有2种:
1,新建一个类,让他继承ObjectOutputStream,重写writeStreamHeader方法
<p>public class MyObjectOutputStream extends ObjectOutputStream { //定义成静态的好处 private static File f;</p><p> /** * 初始化静态文件对象,并返回类对象 * @param file 文件对象,用于初始化静态文件对象 * @param out 输出流 * @return MyObjectOutputStream * @throws IOException */ public static MyObjectOutputStream newInstance(File file, OutputStream out) throws IOException { f = file;//本方法最重要的地方:构建文件对象,是两个文件对象属于同一个 return new MyObjectOutputStream(out, f); }</p><p> @Override protected void writeStreamHeader() throws IOException { if (!f.exists() || (f.exists() && f.length() == 0)) { super.writeStreamHeader(); } else { super.reset(); }</p><p> }</p><p> public MyObjectOutputStream(OutputStream out, File f) throws IOException { super(out); }</p><p>}</p>
2, 创建ObjectOutputStream对象时,按具体情况分别处理:
long fileSize = new File("E:/a.dat").length();if (fileSize > 0) {oos = new ObjectOutputStream(new FileOutputStream("E:/a.dat",true)) {// 重写 writeStreamHeader()方法,空实现protected void writeStreamHeader() {};};} else {oos = new ObjectOutputStream(new FileOutputStream("E:/a.dat",true));}for (int i = 0; i < 10; i++) {oos.writeObject(new Abc(i, i));}oos.flush();oos.close();
0 0
- ObjectOutputStream 多次写同一个文件后,读取出错解决办法
- fopen多次打开同一个文件
- ObjectOutputStream在文件末尾多次追加写入对象的解决方案
- ifstream多次读取文件
- ifstream多次读取文件
- 避免同一个文件被include多次
- 避免同一个文件被include多次
- 如何避免同一个文件被include多次
- 如何避免同一个文件被include多次
- 为了避免同一个文件被include多次
- 避免同一个文件被include多次
- 为了避免同一个文件被include多次
- 避免同一个文件被多次包含
- 同一个Maven项目移机出错解决办法
- Android使用TinyXml2读取文件出错的解决办法
- Python读取非UTF-8编码文件出错的解决办法
- 笔记:repo sync 多次中断后出错
- python多线程读取同一个文件
- 微软CRM 2011 安装图文教程
- SecureCRT下的串口不能输入
- C 语言访问MySQL数据库的简单实验
- Triple Data Encryption Standard(TDES) - 基本介绍
- 在Windows7本机上安装IIS
- ObjectOutputStream 多次写同一个文件后,读取出错解决办法
- 第十七周项目三:胖子伤不起
- 网页学习笔记之GPIO配置
- 01(CodeforcesB水平)CQU新生周末狂欢赛 I - Phone Numbers
- window远程桌面连接 Ubuntu 14.04 ,亲测可试用
- 基于linux c编程的正则表达式
- 吸费电话号码 揭秘声讯电话
- 在已经响应UITapGestureRecognizer的UIView中清晰的响应UIButton点击事件
- 不用光盘、U盘、虚拟光驱也能安装(重装)Win XP操作系统的方法