【发布时间】:2021-03-09 10:12:02
【问题描述】:
如你所见,我确实关闭了 fo 和 oo,所以在那之后我需要关闭 OutputStream 吗? :
public void writedata(List<sinhvien> svlist) {
FileOutputStream fo = null;
ObjectOutputStream oo = null;
try {
fo = new FileOutputStream(datasv);
oo = new ObjectOutputStream (fo);
oo.writeObject(svlist);
}
catch (IOException e) {}
finally {
try {
fo.close();
oo.close();
}
catch (IOException e ) {}
}
}
类似的东西:... OutputStream os if (os != null ) try { os.close() } ... 有必要吗?
【问题讨论】:
-
1,你应该使用try-with-resources 2,在
ObjectOutputStream上调用close也会关闭底层OutputStream -
如果类实现了
AutoCloseable或Closeable并且它已被初始化,那么它可以并且应该被关闭(除非使用带有AutoCloseable接口的try-with-resources)。这可以通过搜索每个类并检查文档来简单地找到。因此,否决了这个问题。 -
但是,在您的情况下,您将一个流嵌入到另一个流中,因此当您关闭一个流时,您将关闭底层流。
-
谢谢你们,伙计们!我明白了!
标签: java inputstream outputstream