除非使用try-with-resource语句,否则BufferedWriter不会写文本

时间:2018-11-08 15:11:28

标签: java

我有一些Java代码,可以使用BufferedWriter将文本写入文件。如果我使用以下代码,则效果很好:

    try(BufferedWriter bw = new BufferedWriter(new FileWriter(filePath)))
    {
        for(int i = 0; i < lines.length; i++)
        {
            bw.write(lines[i]);
            System.out.println("Writing: " + lines[i]);

            if(i != lines.length - 1) bw.newLine();
        }
        bw.flush();
        bw.close();
    }
    catch(Exception ex)
    {

    }

如您所见,我在try语句中声明了“ bw”变量。但是,try-with-resource语句是使用Java的较新版本引入的,而该Java较新版本在需要代码的软件中不可用。

以下是我认为应具有相同结果但不使用try-with-resource语句的示例:

    try
    {
        BufferedWriter bw = new BufferedWriter(new FileWriter(filePath));
        for(int i = 0; i < lines.length; i++)
        {
            bw.write(lines[i]);
            System.out.println("Writing: " + lines[i]);

            if(i != lines.length - 1) bw.newLine();
        }
        bw.flush();
        bw.close();
    }
    catch(Exception ex)
    {

    }

此代码清除文本文件中的所有内容,这与尝试将资源示例代码按预期方式写入文本文件不同。

有什么想法为什么会这样?干杯

1 个答案:

答案 0 :(得分:0)

结果都是两个都抛出了一个异常,愚蠢的是我没有做任何事情,但是由于try-with-resource关闭了BufferedWriter,因此错误并没有停止功能...修复异常因此解决了问题。