Java:Closing Streams:即使在close()之后Streams也是非NULL的

时间:2016-10-07 14:17:09

标签: java

在我的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的结果?

1 个答案:

答案 0 :(得分:5)

流“object”是对流实例的引用。流是否开放是其州的一部分。 close函数是一个在对象状态下运行的函数,因此不会影响对它的引用。

引用将保持非NULL,直到您将其设置为null,但流的状态已关闭,这意味着您无法再使用它。