【问题标题】:EOFexception in Java when reading objectinputstream读取objectinputstream时Java中的EOF异常
【发布时间】:2011-01-19 11:17:41
【问题描述】:

我想读取已输出到 .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");
        }

【问题讨论】:

  • 如果您收到 EOFException,可能是因为您已到达文件末尾。
  • 是的,我认为它已到达文件末尾。
  • 我试过这个,但我只得到 EOFException。什么情况下会得到 NullPointerException?

标签: java objectoutputstream eofexception


【解决方案1】:

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

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

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

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

【讨论】:

  • 您如何解决EOFException 问题?我是否应该将代码包装在 try/catch 块中并等待异常出现>
  • 这不是一个“问题”,而是一个例外。抓住它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多