- 締切済み
BufferedWriterのcloseメソッド
ファイル出力に関して、次のようなコードをよく目にします。 例外処理省略 FileOutputStream fos = new FileOutputStream("hoge.txt"); OutputStreamWriter osw = new OutputStreamWriter(fos); BufferedWriter bw = new BufferedWriter(osw); //ファイルに出力 bw.close(); osw.close(); fos.close(); 同様の処理で、次のようなコードも目にします。 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("hoge.txt"))); //ファイルに出力 bw.close(); 下のコードで、関連するソースを見てみると、BufferedWriterオブジェクトをcloseする際に、そのオブジェクトが参照を持っているOutputStreamWriterオブジェクトはcloseされているように見えるのですが、FileOutputStreamオブジェクトがcloseされているようには見えませんでした。 下のようなコードは安全といえるのでしょうか?BufferedWriterオブジェクトのcloseで引数として渡される各オブジェクトもcloseされるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Kilm
- ベストアンサー率87% (7/8)
回答No.1
お礼
>正常に実行されるとOutputStreamWriter#closeが2回呼ばれている事になります。 そうなんですよね。でも一応正常に動いているので、ダイジョブなのかなぁと考えてしまっているんですが。 >FileOutputStreamだけでもclose呼んだ方が良いかも知れません そうしてしまえばまあ確実ですよね。