Java IO,这些资源是否自动关闭?

Java IO,这些资源是否自动关闭?,java,file-io,io,stream,Java,File Io,Io,Stream,在这段代码中,我读取了一个文本文件,当BufferedReader被“try resource”块关闭时,InputStreamReader会这样做,那么我可以保证所有资源都是这样关闭的吗 try(final BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), charset))) { String line = null; wh

在这段代码中,我读取了一个文本文件,当BufferedReader被“try resource”块关闭时,InputStreamReader会这样做,那么我可以保证所有资源都是这样关闭的吗

try(final BufferedReader br = new BufferedReader(new InputStreamReader(new 
    FileInputStream(file), charset))) {
        String line = null;

        while((line = br.readLine()) != null) {
            builder.append(line);

        }

    }
在另一个例子中,我编写了一个文本文件,正如所写的,所有的资源最终都关闭了吗?是否必须调用flush()


是的,最外层的流调用其内部流的
close()
方法,因此您只需要调用最外层的流

您不需要调用
flush()
,流将在必要时和关闭前刷新。去掉这个,代码就会看起来很完美

try(final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new 
    FileOutputStream(file), charset))) {
        bw.write(text);
        bw.flush();

    }