菜鸟求助!!哪位大神能帮我看看~谢谢!

weixin_36780214 2016-11-21 08:37:15
	public void Test2(){
ObjectInputStream o=null;
Person p4;
try {
o=new ObjectInputStream(new FileInputStream("liuliu.txt"));
Object oo=o.readObject();
p4=(Person)o.readObject();
System.out.println( p4);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
o.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}


下面是出现错误的原因
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 对象序列化和反序列化.Test2(对象序列化和反序列化.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
...全文
347 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwbg1988 2016-11-27
  • 打赏
  • 举报
回复
报错主要是写入阶段: File file = new File("D:/momo.txt"); FileOutputStream fileOutputStream = new FileOutputStream(file); ObjectOutputStream objectOutputStream = new ObjectOutputStream( fileOutputStream); Person person = new Person("zhangsan"); Person person2 = new Person("lisi"); Person person3 = new Person("wangwu"); objectOutputStream.writeObject(person); objectOutputStream.writeObject(person2); objectOutputStream.writeObject(person3); objectOutputStream.writeObject(null); objectOutputStream.close(); fileOutputStream.close(); 注意最后写入一个空对象。 第7行 修改为 p4=(Person)oo; 就能正确读到;
zhaopeng2511 2016-11-27
  • 打赏
  • 举报
回复
引用 1 楼 northwesternwind 的回复:

 p4=(Person)o.readObject();
已经读入到oo, 为何再次读入?
+1
解开者 2016-11-25
  • 打赏
  • 举报
回复
ObjectInputStream是用来读取被序列化的二进制对象的,不能用来读取文本文件 一般只有用ObjectOutputStream输出的序列化对象才能被这种方式读取
webnonono 2016-11-25
  • 打赏
  • 举报
回复
EOFException表示输入过程中意外地到达文件尾或流尾的信号,导致异常。 其实我挺好奇你的liuliu.txt里面存了什么,这样读出来强转能正确的转化么
清风步月 2016-11-22
  • 打赏
  • 举报
回复
这格式和对象名看着难受。。。
northwesternwind 2016-11-21
  • 打赏
  • 举报
回复

 p4=(Person)o.readObject();
已经读入到oo, 为何再次读入?

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧