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 に答える