问题说明了一切。
不关闭各种字节流会带来什么后果?
始终要强调这样做,但是没有提及它是如何引起问题的。
有人可以解释一下实际情况吗?
最佳答案
这不仅是字节流。这涉及实现 Closeable
的任何事情。
如文档所述:
调用close方法以释放对象持有的资源(例如打开的文件)。
不管Closeable
是否拥有系统资源,经验法则是:不要碰巧。正确地对其进行.close()
编码,可以确保您释放了此类系统资源(如果有)。
典型的成语(请注意InputStream
实现Closeable
):
final InputStream in = whateverIsNeeded;
try {
workWith(in);
} finally {
in.close();
}
在Java 7中,您还拥有
AutoCloseable
(由Closeable
实现)和try-with-resources语句,因此:try (
final InputStream in = whateverIsNeeded;
) {
workWith(in);
}
这将为您处理
in
的关闭。再说一遍:不要抓住机会。如果您不使用JDK 7但可以买得起Guava,请使用
Closer
。