在我的finally子句中,我清理任何流,例如,
finally // Clean up
{
if (os != null) {
try {
os.close();
}
catch (IOException ioe) {
logger.warn("Failed to close outputStream", ioe);
}
}
if (is != null) {
try {
is.close();
}
catch (IOException ioe) {
logger.warn("Failed to close inputStream", ioe);
}
}
但是我看到即使关闭后Streams仍然是非NULL。那么检查NULL是错误的吗?或者我看不到close
的结果?
答案 0 :(得分:5)
流“object”是对流实例的引用。流是否开放是其州的一部分。 close函数是一个在对象状态下运行的函数,因此不会影响对它的引用。
引用将保持非NULL,直到您将其设置为null,但流的状态已关闭,这意味着您无法再使用它。