解决循环操作ObjectInputStream的readObject()方法的EOF异常
来源:互联网 发布:微信js获取signature 编辑:程序博客网 时间:2024/06/06 10:11
// 读入文件FileInputStream reader = new FileInputStream("accout.txt");ObjectInputStream bbr = new ObjectInputStream(reader);Object object;while((object = bbr.readObject()) != null ){AccoutBean bean = (AccoutBean)object;System.out.println(bean);}
会有
Exception in thread "main" java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at homework_2_6.HomeWork_2_6_2v.readerAcctinfo(HomeWork_2_6_2v.java:128)
at homework_2_6.HomeWork_2_6_2v.main(HomeWork_2_6_2v.java:108)
错误。
如果用 available() 判断是否读完是没有用的。
这里有3种解决方法:
1、在写入的时候,
// 写入账户信息文件FileOutputStream write = new FileOutputStream("accout.txt");ObjectOutputStream bw = new ObjectOutputStream(write);for(int i =0; i < accouts.length; i++){bw.writeObject(accouts[i]);}bw.writeObject(null);bw.close();write.close();最后写入 bw.writeObject(null);
2、将若干个对象(数量不定)都装入一个容器中(如:ArrayList之类),然后将容器这一个对象写入就行了。读取时,只要读取一个对象(即容器对象)就行了。
写入时:
// 写入账户信息文件
FileOutputStream write = new FileOutputStream("accout.txt");
ObjectOutputStream bw = new ObjectOutputStream(write);
bw.writeObject(accouts);
// for(int i =0; i < accouts.length; i++){
// bw.writeObject(accouts[i]);
// }
//
// bw.writeObject(null);
bw.close();
write.close();
直接写入 accouts 数据对象。 我用的例子是 数据。
读入的时候改成:
// 读入文件FileInputStream reader = new FileInputStream("accout.txt");ObjectInputStream bbr = new ObjectInputStream(reader);//while((object = bbr.readObject()) != null ){//AccoutBean bean = (AccoutBean)object;//System.out.println(bean);//}AccoutBean[] accouts = (AccoutBean[]) bbr.readObject();for(AccoutBean acct:accouts){System.out.println(acct);}
3、直接捕获异常 EOFException,就不举例子了。
参看:http://bbs.csdn.net/topics/300140830
- 解决循环操作ObjectInputStream的readObject()方法的EOF异常
- 解决循环操作ObjectInputStream的readObject()方法的EOF异常
- 解决ObjectInputStream的readObject()方法的EOF异常
- 解决ObjectInputStream的readObject()方法的EOF异常
- ObjectInputStream的readObject()方法读取对象问题
- ObjectInputStream的readObject方法出现java.lang.ClassNotFoundException
- 使用ObjectInputStream的readObject()方法如何判断读取到多个对象的结尾
- ObjectInputStream循环读取对象的方法
- 检查ObjectInputStream可读的方法
- ObjectInputStream 如何循环读取所有的对象
- Socket通信readObject()方法出现异常
- 文件操作eof()的问题
- 文件操作EOF()的问题
- 文件操作EOF的问题
- #Android##bug#ObjectInputStream eof
- 解决getOutputStream() 异常的方法
- 解决getOutputStream() 异常的方法
- 归档文件中异常的 EOF
- Android开发之WebView详解
- 关于可控大小的双向循环链表
- 【POJ】2584 T-Shirt Gumbo 最大流
- linux下socket编程IO多路复用select模型
- 三、odataproducer代码改写
- 解决循环操作ObjectInputStream的readObject()方法的EOF异常
- Samsung/三星 G110B root教程_方法
- Android开发之网页浏览器(WebView的使用)
- Maven学习 (六) 搭建多模块企业级项目
- Win32 网络编程
- leetCode single number解题分享
- javascript中的错误
- python学习_入门(2)
- (老罗)Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析