2010-02-22 52 views
0

我想读取已输出到.dat文件的多个对象(我自己的类Term),但我总是得到一个nullPointException或EOFException。阅读objectinputstream时Java中的EOFexception

ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(masterFile)); 
     Object o = null; 
     while((o = inputStream.readObject()) != null){ 
      Term t = (Term)o; 
      System.out.println("I found a term"); 
     } 
+0

如果您收到EOFException,可能是因为您已达到文件末尾。 – 2010-02-22 00:39:12

+0

是的,我认为它已经到达文件的末尾。 – user276712 2010-02-22 00:42:13

+1

我试过这个,我只能得到EOFException。在什么情况下你会得到NullPointerException? – lins314159 2010-02-22 01:18:45

回答

5

查看Javadoc。 readObject()在EOF处不返回空值。它抛出EOFException。它可以返回null的唯一方法是如果你在另一端写了一个null,这不一定是终止读循环的好理由。

总之你的代码是错误的。

注意'o'的初始化是多余的。

注意:(2)您发布的密码不能丢弃NullPointerException,,除非masterFile为空。这是一个严重的报告还是猜测?

+0

可能的重复你如何解决'EOFException'问题?我是否应该将代码包装在try/catch块中并等待异常发生> – 2012-10-02 01:55:02

+0

这不是一个'问题',它是一个例外。抓住它。 – EJP 2013-11-11 22:11:12