我正在使用FileInputStream
第一次尝试从文件加载对象 ( Item
)。
这是我的代码:
try {
FileInputStream fi = new FileInputStream(f);
ObjectInputStream reader = new ObjectInputStream(fi);
while (true) {
Item i = (Item)reader.readObject();
System.out.println(i.getName());
}
} catch (Exception e) {
System.out.println(e.toString());
}
我读到这是执行此操作的标准方法,并且代码运行良好。然而,这样fi
和reader
永远不会关闭,因为编译器会跳转到 catch
立即阻止 EOFException
被抛出。
编译器不允许我关闭 fi
和reader
在 catch
或finally
堵塞。这真的是应该的样子吗?如何正确关闭输入对象?
最佳答案
您可以使用 try-with-resources 语句,如下所示:
try (FileInputStream fi = new FileInputStream(f);
ObjectInputStream reader = new ObjectInputStream(fi)) {
while (true) {
Item i = (Item)reader.readObject();
System.out.println(i.getName());
}
} catch (Exception e) {
System.out.println(e.toString());
}
这里是documentation了解有关此方法的更多信息。
关于java - 如何正确关闭ObjectInputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47397157/