java - 无法解析 java.io.EOFException?

标签 java file-io

这是我的第一个文件

   public class ObjectStream 
     {
       public static void main(String args[]) throws FileNotFoundException, IOException
     {
     java.io.File f=new java.io.File("D:Employee.outt") ;  
      Employee e=new Employee("John");
      Employee e1=new Employee("Mary");
         Employee e2=new Employee("Christian");
       OutputStream os=new java.io.FileOutputStream(f);

       java.io.ObjectOutputStream oos=  new ObjectOutputStream(os);
      oos.writeObject(e);
       oos.writeObject(e1);
         oos.writeObject(e2);
      }
      }

这是我的第二个文件

    public class Employee implements java.io.Serializable
    {
     private static int count=100;
    private int eid;
     private String ename;

     public Employee()
    {
     count++;
     this.eid=count;        
    }

    public Employee(String ename)
   {
    this();
    this.ename=ename;        
    }

    public static int getCount() {
       return count;
     }

    public static void setCount(int count) {
      Employee.count = count;
     }

     public int getEid() {
      return eid;
      }

    public void setEid(int eid) {
      this.eid = eid;
    }

    public String getEname() {
      return ename;
     }

     public void setEname(String ename) {
         this.ename = ename;
   }

   }

这是我的第三个文件

      public class MainClass
    {
         public static void main(String args[]) throws FileNotFoundException,        IOException, ClassNotFoundException
       {
        File f=new File("D:Employee.outt");
       byte data[]=new byte[(int)f.length()];
    InputStream is=new java.io.FileInputStream(f);
      java.io.ObjectInputStream ois=new java.io.ObjectInputStream(is);
    Object o=ois.readObject();



    while(o!=null)
         {
   Employee e=(Employee)o;
   System.out.println(e.getEid());
   System.out.println(e.getEname());
     o=ois.readObject();
       }


    ois.close();
    is.close();
     }
     }

我试图通过第三个文件读取 Employee.outt 中存储的对象,但它正在读取所有对象,但最后抛出

Exception in thread "main" java.io.EOFException.

不知道如何解决。

最佳答案

while(o!=null)

这不是读取 ObjectInputStream 的有效方法。 如果您写入了 null,则 readObject() 方法仅返回 null。在流末尾,它会抛出一个 EOFException,因此读取流的正确方法是循环调用 readObject() 直到捕获该异常,然后中断并关闭流。

at the end of file it is giving EOF exception

这正是 EOFException 的含义。

关于java - 无法解析 java.io.EOFException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22705024/

相关文章:

java - 自动整数线程澄清

python - 在python中浏览文件路径

java从文件初始化对象

c - 在 C 中,如何从 MacOSX 应用程序包写入文件

java - JTable从第二行读取文本文件

c++ - 是否有等价物可以在不同平台上传播?

java - 用户输入 Ctrl+Z 时终止 Java 程序

java - 以编程方式发送 Whatsapp 消息到特定号码

java - 如果To E-mail地址失败,如何通过spring API发送邮件到BCC/CC

java - 4.0 XSD 上的 Hibernate 异常