Java中的EOFexception在读取objectinputstream时

use*_*712 1 java objectoutputstream eofexception

我想读取我输出到.dat文件的多个对象(我自己的类Term),但我总是得到一个nullPointException或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");
        }
Run Code Online (Sandbox Code Playgroud)

use*_*421 6

见Javadoc.readObject()在EOF时不返回null.抛出EOFException.它返回null的唯一方法是在另一端写入null,并且这不一定是终止读循环的好理由.

简而言之,您的代码是错误的.

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

注意(2)您发布的代码不能抛出,NullPointerException,除非masterFile为null.这是一个严肃的报告还是只是猜测?