java - 读取对象输入流时Java中的EOFexception

标签 java objectoutputstream eofexception

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

最佳答案

请参阅 Javadoc。 readObject() 在 EOF 处不返回 null。它会抛出 EOFException。 它可以返回 null 的唯一方法是在另一端写入 null,而这不一定是终止读取循环的好理由。

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

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

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

关于java - 读取对象输入流时Java中的EOFexception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2308128/

相关文章:

java - append 到 ObjectOutputStream

java - 无法在 ObjectOutputStream 之后转换 POJO

java - 文件最后一行的 EOFException 的 datainputstream

java - 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

java - 无法从资源加载定义

java - ScheduledExecutorService 的使用和流内锁定套接字的清理

java - 如何将点对象写入文本文件

java - 通过单个套接字连接发送多个文件时java中的EOF异常

java - 在java中读取对象直到文件结束

java - 资源 ID 的整数数组返回 0