【问题标题】:Java IO, are these resources automatically closed?Java IO,这些资源会自动关闭吗?
【发布时间】:2018-03-27 19:24:47
【问题描述】:

在这段代码中,我读取了一个文本文件,当 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()?

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

    }

【问题讨论】:

    标签: java file-io io stream


    【解决方案1】:

    是的,最外面的流调用了它们内部流的close()方法,所以你只需要调用最外面的流。

    您无需调用flush(),流将在必要时和关闭之前刷新。删除它,代码会看起来很完美。

    【讨论】:

      猜你喜欢
      • 2014-09-13
      • 2013-01-04
      • 2011-03-03
      • 2014-01-31
      • 1970-01-01
      • 2016-09-23
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多