当前位置: 首页 > 面试题库 >

读取objectinputstream时Java中的EOFexception

池麒
2023-03-14
问题内容

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

问题答案:

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

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

注意,“ o”的初始化是多余的。

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



 类似资料:
  • 我很难理解Java中输出/输入流的行为。 ObjectOutputStream实现了DataOutput接口,因此作为DataOutputStream,它具有编写原语的方法。 但反转写入的字节ObjectInputStream会引发EOF。 引发此异常 使用其他原语引发相同的异常。用字节包装器类替换基元字节(并使用读/写对象),问题消失了。。。 有没有一种方法可以将ObjectOutputStre

  • 问题内容: 我基本上有一个与此处所述类似的问题:读取objectinputstream时,Java中出现EOFexception,但是我找不到干净的答案。 答案表明,当读者到达文件结尾时,将会抛出异常。在网上寻找解决方案后,我没有找到解决方案。对于这种情况,可能是一个好的干净的解决方案吗? 注意:我已经试过了(但是看起来很丑,而且代码也不干净)。我正在寻找更好的解决方案: 问题答案: 那是应该发生

  • 主要内容:1 什么是Java ObjectInputStream,2 Java ObjectInputStream的语法,3 Java ObjectInputStream构造方法,4 Java ObjectInputStream方法1 什么是Java ObjectInputStream java.io.ObjectInputStream类反序列化的原始数据和以前写的对象使用一个ObjectOutputStream。 以下是关于缓冲输入流的要点: 它是用来恢复先前序列化的对象。它确保所有对象的图形

  • 在我的程序的先前代码中,我使用 ObjectOutputStream 和 FileOutPutStream 将一个 ArrayList(由名为 location 的自定义类的对象组成,如您在代码中看到的那样)。但是,当尝试使用 ObjectInputStream 从文件中检索对象时,我收到一条错误消息,指出我有一个未处理的异常(ClassNotFoundException)。 以下是我用来从文件中

  • 我正在尝试实现一个“帐户”列表的加载/保存,其方法与我成功使用的一个HashMap类似。 背景: 在这里我想设置我的帐户列表包括保存的帐户。 加载/保存实现: 问题是,当我第一次初始化AccountManager时,accounts.ser文件没有保存的帐户,因为该功能是在稍后的方法中实现的,因此给出了以下例外情况: 我尝试在捕获EOFExceptions时将account设置为新的ArrayLi

  • 问题内容: 伙计们,我现在感觉真的很愚蠢。…基本上我是通过本地计算机上的TCP连接的…并且当我尝试在客户端创建In / out流时,不会通过创建对象输入流。是什么赋予了?这在打印2之后停止…没有异常或任何事情…这不是我第一次使用此类,这是我感到困惑的部分原因。 问题答案: 根据ObjectInputStream 的规范: 该构造函数将阻塞,直到相应的ObjectOutputStream写入并刷新了