正确释放I/O资源

Raj*_*ani 6 java io file

我想知道什么是释放文件资源/句柄的最佳/适当方式.

传统代码,

BufferredInputStream stream = null
try{
  ----
  stream = new BufferredInputStream(new FileInputStream());
  ----
} finally{
  if(stream != null){
    stream.close()
  }
Run Code Online (Sandbox Code Playgroud)

}

通过BufferredInputStream.close单独关闭来释放文件句柄,还是需要stream(i.e. FileInputStream.close())显式调用底层文件句柄.

P.S. Javadoc for [FilterOutputStream.close]method指定它也将显式关闭基础流.但其他流似乎在文档中没有这个.

[FilterOutputStream.close]: http://docs.oracle.com/javase/1.4.2/docs/api/java/io/FilterOutputStream.html#close%28%29
Run Code Online (Sandbox Code Playgroud)

请指教.提前致谢.

Rah*_*hul 4

您始终可以检查底层类的源代码以确定确切的行为。

然而,在这种情况下,调用close()onBufferedInputStream也将关闭底层流 ie FileInputStream

源代码可以在这里找到