本人第一次写java程序,一下接触这么多新东西头都大了……
遇到的问题:
要根据用户选择,向一个文件写一个类(Student)的实例,使用FileOutputStream与ObjectOutputStream流,FileOutputStream初始化为:
fileOutputStream = new FileOutputStream(fileStorage, true); // fileStorage是File的实例。追加写方式。(append)
使用objectOutputStream.writeObject(student)进行写入,写入前建立流,写入后关闭流。
student = (Student) objectInputStream.readObject()用来读出。读出前建立流,读出后关闭流。
由于每一次启动写操作时都会写入一个标记头,造成读入时只能读取第一个写入的记录。
网上搜了半天,搜得如下结论:ObjectOutputStream的构造函数会向输出流中写入一个标识头,而ObjectInputStream会首先读入这个标识头.
因此,多次以追加方式向一个文件中写入object时,该文件将会包含多个标识头.
所以用ObjectInputStream来deserialize这个ObjectOutputStream时,将产生StreamCorruptedException.
一种解决方法是可以构造一个ObjectOutputStream的子类,并覆盖writeStreamHeader()方法.
被覆盖后的writeStreamHeader()方法应判断是否为首次向文件中写入object,是则调用super.writeStreamHeader();
若否,即以追加方式写入object时,则应调用ObjectOutputStream.reset()方法.请教大家,该如何实现?
本人初学,水平低。打开类库中ObjectOutputStream类,看相关方法,发现根本看不懂……更不知道该如何去覆盖那些方法了。
以前没发过贴,没什么分,就不给太多了……
遇到的问题:
要根据用户选择,向一个文件写一个类(Student)的实例,使用FileOutputStream与ObjectOutputStream流,FileOutputStream初始化为:
fileOutputStream = new FileOutputStream(fileStorage, true); // fileStorage是File的实例。追加写方式。(append)
使用objectOutputStream.writeObject(student)进行写入,写入前建立流,写入后关闭流。
student = (Student) objectInputStream.readObject()用来读出。读出前建立流,读出后关闭流。
由于每一次启动写操作时都会写入一个标记头,造成读入时只能读取第一个写入的记录。
网上搜了半天,搜得如下结论:ObjectOutputStream的构造函数会向输出流中写入一个标识头,而ObjectInputStream会首先读入这个标识头.
因此,多次以追加方式向一个文件中写入object时,该文件将会包含多个标识头.
所以用ObjectInputStream来deserialize这个ObjectOutputStream时,将产生StreamCorruptedException.
一种解决方法是可以构造一个ObjectOutputStream的子类,并覆盖writeStreamHeader()方法.
被覆盖后的writeStreamHeader()方法应判断是否为首次向文件中写入object,是则调用super.writeStreamHeader();
若否,即以追加方式写入object时,则应调用ObjectOutputStream.reset()方法.请教大家,该如何实现?
本人初学,水平低。打开类库中ObjectOutputStream类,看相关方法,发现根本看不懂……更不知道该如何去覆盖那些方法了。
以前没发过贴,没什么分,就不给太多了……
解决方案 »
- 求助!递增的变量名怎么写
- java.io.IOException: CreateProcess: 求助
- equals()和hashCode()
- 在xslt文件中包含js代码时,小于号不被识别的问题
- 刚学习JAVA,不知道JAVA里面有多少需要去记住的词汇?
- 在java中如何实现分页打印阿?
- 如何限定只能输入半角英数字。。。
- 新手的新手第一个问题~肯请帮忙啊~
- 请这个版的版主进来 ,你要解决不了,就给我向上面汇报一下,谢谢了(这个帖子我可能不该放到这里,解决完,给我个方法,我是转移还是怎
- 请问谁知道哪儿有免费的jdbc连mssqlserver的驱动程序?
- jeditorPane编辑的问题
- MappedByteBuffer 内存映射,直接宕机后物理文件没同步
楼主【ylqndscylq】截止到2008-07-05 18:13:06的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:0
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:0
结贴的百分比:0.00 % 结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html