有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java应该向BufferedReaders传递一个动态文件读取器吗?

如问题所述,传递动态FileReader是一种糟糕的做法吗?这个FileReader是否应该/能够充分关闭

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

FileReader也应该关闭吗?这样做是否需要分居

也许是一个简单的问题,但我不太精通JavaIO;如果是的话,我道歉。提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    不,没有必要buffReader.close()也将关闭文件读取器

    出于某种原因,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

    这是我所知道的所有“包装器”的情况,包括像这样的东西