BufferedReaders应该传递动态FileReader吗?

时间:2015-05-01 09:38:06

标签: java performance bufferedreader filereader java-io

正如问题所述,传递动态FileReader不良做法?这个/ FileReader是否可以充分关闭?

BufferedReader buffReader = new BufferedReader(
    new FileReader(new File("C:/Path/To/File.txt")));
.... do something
buffReader.close();

FileReader也应该关闭吗?是否需要分离?

也许是一个简单的问题,但我并不精通Java IO;如果是这样,请道歉。提前谢谢!

1 个答案:

答案 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

我知道的所有“包装”都是这种情况 - InputStreamOutputStream s,ReaderWriter s,包括事物比如InputStreamReader