开发者社区> 问答> 正文

遇到 EOFException 怎么解决?java报错

遇到 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)

原因是什么,为什么会发生异常,以及下面到底发生了什么。如果有人能帮忙?提前谢谢

展开
收起
爱吃鱼的程序员 2020-05-26 17:32:47 891 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    楼主。看了你的代码信息,一般有以下两种情况: 1.序列化的问题:你要创建的对象在流中传输,必须将此类对象进行序列化,就是implements Serializable接口

    2.EOFException的问题: 你从文件中读取对象的时候,如何判断是否读取完毕。jvm会给抛出EOFException,表示的是,文件中对象读取完毕。所以呢,你在判断是否读取结束的时候,捕获掉这个异常就可以,是捕获不是抛出

    2020-05-26 18:46:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载