2

我正在使用 java.io.BufferedWriter 编写一些代码,我尝试的第一件事是:

    String filename = new String("test.txt");
    Charset charset = new Charset("US-ASCII");
    try {
        BufferedWriter bw = Files.newBufferedWriter(Paths.get(filename), charset);
        bw.write("hello");
    } catch (IOException e) {
        System.out.println(e);
    }

它输出了一个空的 test.txt 看到一个例子,格式如下,我试过:

    String filename = new String("test.txt");
    Charset charset = new Charset("US-ASCII");
    try (BufferedWriter bw = Files.newBufferedWriter(Paths.get(filename), charset)){
        bw.write("hello");
    } catch (IOException e) {
        System.out.println(e);
    }

它输出了一个带有第一行“hello”的文本文件。这种形式是什么意思,为什么它有效而我的第一次尝试没有?

4

2 回答 2

5

这在 Java 7 中称为“try-with-resources”,如果您将其修复为 BufferedWriter 将自动关闭

    try (BufferedWriter bw = Files.newBufferedWriter(Paths.get("filename"), StandardCharsets.US_ASCII)) {
        bw.write("hello");
    }

请参阅http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

于 2012-12-18T05:36:18.117 回答
1

第一个选项在语法上是正确的。

我想你想念

bw.close(); 

在你写完之后。

关闭流,首先刷新它。

于 2012-12-18T04:36:57.577 回答