【发布时间】:2012-09-22 22:32:55
【问题描述】:
我基本上遇到了与此处所述类似的问题:EOFexception in Java when reading objectinputstream,但我没有找到干净代码的答案。
答案指出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();
【问题讨论】:
-
我没有发现这段代码有什么问题。我是你的文件没有对象。
-
我的文件有对象,因为我可以在
MyClass m = (MyClass)o;行之后使用它们。它仍然抛出EOFException,我不知道如何以干净的方式摆脱它。 -
在代码的最后会抛出这个异常,这是Java语言的基本做法。您将不得不管理该异常,这没有错
-
@BhavikAmbani 这是 this API 和其他一些 API 的“基本方法”,基本上是所有
readXXX()方法,除了返回readLine()的readLine(),以及当然read()本身返回-1。与“Java 语言”本身无关,只是 API。 -
@downvoter:发表评论,解释您的反对意见
标签: java