正如问题所述,传递动态FileReader
不良做法?这个/ FileReader
是否可以充分关闭?
BufferedReader buffReader = new BufferedReader(
new FileReader(new File("C:/Path/To/File.txt")));
.... do something
buffReader.close();
FileReader
也应该关闭吗?是否需要分离?
也许是一个简单的问题,但我并不精通Java IO;如果是这样,请道歉。提前谢谢!
答案 0 :(得分:4)
不,没有必要。 buffReader.close()
也将关闭FileReader。
出于某种原因,Javadoc似乎没有提到这一点。但是,如果您查看BufferedReader
的源代码,您会发现close
定义为:
public void close() throws IOException {
synchronized (lock) {
if (in == null)
return;
in.close();
in = null;
cb = null;
}
}
其中in
是包裹的Reader
(在这种情况下是FileReader
)。因此,关闭BufferedReader
也会关闭FileReader
。
我知道的所有“包装”都是这种情况 - InputStream
,OutputStream
s,Reader
和Writer
s,包括事物比如InputStreamReader
。