遇到 EOFException 怎么解决?java报错
在编写java的样例代码时出现这种问题。这种情况应该如何解决和避免那?
public class ObjectStream {
public static void main(String[] args) throws Exception {
User user1=new User("yiwangzhibujian",27);
User user2=new User("laizhezhikezhui",24);
ByteArrayOutputStream bos=new ByteArrayOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(bos);
oos.writeObject(user1);
oos.writeObject(user2);
oos.writeObject(null);
byte[] data = bos.toByteArray();
ByteArrayInputStream bis=new ByteArrayInputStream(data);
ObjectInputStream ois=new ObjectInputStream(bis);
System.out.println(ois.readObject());
System.out.println(ois.readObject());
System.out.println(ois.readObject());
System.out.println(ois.readObject());
}
}
class User implements Serializable{
private static final long serialVersionUID = 1L;
public String name;
public int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
}
错误信息:
Exception in thread "main" java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2608)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1319)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at yiwangzhibujian.objectstream.ObjectStream.main(ObjectStream.java:28)
原因是什么,为什么会发生异常,以及下面到底发生了什么。如果有人能帮忙?提前谢谢
楼主。看了你的代码信息,一般有以下两种情况: 1.序列化的问题:你要创建的对象在流中传输,必须将此类对象进行序列化,就是implements Serializable接口
2.EOFException的问题: 你从文件中读取对象的时候,如何判断是否读取完毕。jvm会给抛出EOFException,表示的是,文件中对象读取完毕。所以呢,你在判断是否读取结束的时候,捕获掉这个异常就可以,是捕获不是抛出
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。