4

重複の可能性:
Javaでネストされたストリームを閉じる最良の方法は?

ネストされたストリームを閉じるにはどうすればよいですか?それらすべてを閉じますか?はいの場合、注文は何ですか?

FileOutputStream out = new FileOutputStream("data.txt", true);
PrintWriter pout = new PrintWriter(out);

/* do some I/O */

pout.close();
out.close();

または、最もアウトストリームを閉じると、すべてが閉じられます。

pout.close(); // Is this enough?
4

2 に答える 2

8

チェーンストリームを閉じるときは、最も外側のストリームを閉じるだけで済みます。エラーはチェーンの上位に伝播され、キャッチされます。

ここを見てください。おそらく、この質問は以前に尋ねられたことがあります。

于 2011-07-05T18:02:41.760 に答える
3

常にfinallyブロックでリソースを閉じます。

acquire();
try {
    use();
} finally {
    release();
}

ここでの唯一のリソースはですFileOutputStream。したがって、実際に閉じる必要があるのはそれだけです。PrintWriterコンストラクターがスローする場合は、FileOutputStreamとにかく解放する必要があります。これにより、を閉じるだけで済みPrintWriterます。

flush 注意してください、あなたは本当にしたいですPrintWriter。これは、例外ではない場合にのみ実行する必要があるため、最終的には必要ありません。

于 2011-07-05T18:39:18.357 に答える