java 使用对象输出流ObjectOutputStream对文件追加对象注意
来源:互联网 发布:shake it offmp3在线 编辑:程序博客网 时间:2024/06/04 23:35
在使用java来存储对象是很简单的,但是需要追加对象时为了方便在能使用ObjectInputStream读取所有对象时(包括追加的对象),就需要要做些特别的处理。
首先能追加数据,那么在构造FileOutPutStream时注意。
FileOutputStream(File file, boolean append)
创建一个向指定 File
对象表示的文件中写入数据的文件输出流
创建一个向指定 File
对象表示的文件中写入数据的文件输出流。如果第二个参数为 true
,则将字节写入文件末尾处,而不是写入文件开始处。创建一个新 FileDescriptor
对象来表示此文件连接。
其次为了能保证追加的对象被读取到,那么需要自己去新建一个对象输出流,并继承ObjectInputStream,并重写
protected void writeStreamHeader() throws IOException
- 提供 writeStreamHeader 方法,这样子类可以将其自身的头部添加或预加到流中。它可以将幻数 (magic number) 和版本写入流。
如下代码网上参考的:
class ObjectOutputStreamForAddObject extendsObjectOutputStream { private static File f; writeStreamHeader()方法是在ObjectOutputStream的构造方法里调用的由于覆盖后的writeStreamHeader()方法用到了f。如果直接用构造方法创建一个MyObjectOutputStream对象,那么writeStreamHeader()中的f是空指针因为f还没有初始化。所以这里采用单态模式(将构造方法定义为私有的,然后通过方法获取对象,可以保证某个类只能存在一个对象示例) public static ObjectOutputStreamForAddObject newInstance(File file,OutputStream out) throws IOException { f = file; return new ObjectOutputStreamForAddObject(out);} private ObjectOutputStreamForAddObject(OutputStream out) throws IOException{ super(out); } @Override protected void writeStreamHeader() throws IOException { if (!f.exists() || (f.exists() &&f.length() == 0)) { super.writeStreamHeader(); } else { super.reset(); } }}最后 在将对象写入文件的时候是调用ObjectOutputStreamForAddObject类,记得调用flush(),close()方法哦。
以上才能保证追加对象不会出错。
0 0
- java 使用对象输出流ObjectOutputStream对文件追加对象注意
- java对象流ObjectInputStream、ObjectOutputStream的使用
- java 对象流的使用示例-- ObjectOutputStream
- ObjectOutputStream 对象追加的实现
- 序列化ObjectOutputStream(对象流)在同一文件追加对象问题
- java 序列化ObjectOutputStream 同一文件追加写对象问题的解决
- ObjectOutputStream在文件末尾多次追加写入对象的解决方案
- ObjectOutputStream在文件末尾追加对象和EOFException异常
- Java 对象流ObjectInputStream和ObjectOutputStream类
- Java 对象流ObjectInputStream和ObjectOutputStream
- java 对象流(ObjectOutputStream,ObjectInputStream)
- Java-IO之对象输入流输出流(ObjectInputStream和ObjectOutputStream)
- 使用对象流读写对象代码笔记(ObjectInputStream ,ObjectOutputStream)
- 对象流(ObjectOutputStream 和 ObjectInputStream)
- IO流-ObjectOutputStream-将对象写入到文件中
- Java IO流->处理流->对象流:ObjectOutputStream&ObjectInputStream
- Java浅谈流之对象流ObjectInputStream和ObjectOutputStream
- java基础之IO流--ObjectOutputStream(专门用于操作对象)
- .net 身份验证方式有哪些及原理
- Linux下Python调用C动态库
- python urllib模块详解
- WEB前端开发工具--整理
- hdu2993之斜率dp+二分查找
- java 使用对象输出流ObjectOutputStream对文件追加对象注意
- 关于时钟
- 3-4. 成绩转换(15)
- CheckPoint没有自动执行[TimesTen运维基础]
- Linux 上的基础网络设备详解
- 集成SDK服务[随手记]
- TinyXML简单记录
- 2012年度最佳Web前端开发工具和框架
- 开源框架开发框架|thinkphp自学教程(