2010-02-22 126 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