我基本上有一个与此处所述类似的问题:读取objectinputstream时,Java中出现EOFexception,但是我找不到干净的答案。
答案表明,ObjectInputStream#readObject
当读者到达文件结尾时,将会抛出异常。在网上寻找解决方案后,我没有找到解决方案。对于这种情况,可能是一个好的干净的解决方案吗?
注意:我已经试过了(但是看起来很丑,而且代码也不干净)。我正在寻找更好的解决方案:
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
try {
Object o;
while ((o = ois.readObject()) != null) {
if (o instanceof MyClass) {
MyClass m = (MyClass)o;
//use the object...
}
}
} catch (EOFException eofex) {
//do nothing
} catch (IOException ioex) {
throw ioex;
//I have another try/catch block outside to control the life of the ObjectInputStream
}
//later in the code...
ois.close();
那是应该发生的。您的代码是错误的。检查Javadoc。readObject()
仅null
在您写了时返回null
。它并没有说要在EOF返回null。仅当您编写过孔时才循环直到readObject()
返回为止,否则,将得到一个。null``null``writeObject()``EOFException
问题内容: 我想读取已输出到.dat文件的多个对象(我自己的类Term),但始终会得到nullPointException或EOFException。 问题答案: 请参阅Javadoc。在EOF处不返回null。它抛出异常返回null的唯一方法是在另一端写了null,这不一定是终止读取循环的一个好理由。 简而言之,您的代码是错误的。 注意,“ o”的初始化是多余的。 注意(2)您发布的代码不能为空
我正试图在服务器端序列化一个HashMap(Tomcat 6 . 0 . 29 ),并在客户端android应用程序上反序列化它。 我第一次尝试这个,我得到了StreamCoruptedExc的,但在我创建了一个全新的servlet与干净的doget/doPost-方法,我已经设法解决了这个问题,不幸的是,我得到了一个EOF异常,而不是。 所以,首先我发布我的代码,然后我将详细解释我的问题: 服务
我已经创建了一个可外部化的对象用户。除了我退出应用程序并重新打开它之外,它在写入和从存储中读取它时工作得很好。然后出现此错误: 在java.io.datainputstream.readfully(datainputstream.java:197)在java.io.datainputstream.readutf(datainputstream.java:609)在java.io.datainput
我正在尝试实现一个“帐户”列表的加载/保存,其方法与我成功使用的一个HashMap类似。 背景: 在这里我想设置我的帐户列表包括保存的帐户。 加载/保存实现: 问题是,当我第一次初始化AccountManager时,accounts.ser文件没有保存的帐户,因为该功能是在稍后的方法中实现的,因此给出了以下例外情况: 我尝试在捕获EOFExceptions时将account设置为新的ArrayLi
在我的程序的先前代码中,我使用 ObjectOutputStream 和 FileOutPutStream 将一个 ArrayList(由名为 location 的自定义类的对象组成,如您在代码中看到的那样)。但是,当尝试使用 ObjectInputStream 从文件中检索对象时,我收到一条错误消息,指出我有一个未处理的异常(ClassNotFoundException)。 以下是我用来从文件中
我在apache Spark中读取本地文件时出错。scala>val f=sc.textfile(“/home/cloudera/downloads/sample.txt”)