- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイル操作時のclose処理の失敗とは?)
ファイル操作時のclose処理の失敗とは?
このQ&Aのポイント
- ファイル操作時のclose処理の失敗とは、ファイル出力処理が終了する際に発生する例外のことです。
- 具体的なケースとしては、バッファ書き込みをするクラスの場合にディスクの容量が足りなくて書き込みが失敗し、例外が発生することがあります。
- 例外が発生した場合には、ログ出力以外での処理としては、エラーメッセージの表示や例外の再スローなどが考えられます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>close処理時に書込みが失敗して例外発生、ということは >十分にありうると思います。しかしFileOutputStreamでは関係ありません。 なんで関係無いって言える? クラスがバッファ書き込みをしなくたって、OSレベルでバッファリングしていたり、デバイスドライバレベルでバッファリングしていたり、BIOSレベルでバッファリングしていたら、closeの呼び出しでバッファをフラッシュしようとしてデバイスに書き込めなくて失敗する事がある。 「FileOutputStreamではバッファリングが関係ない」と断言出来るのは、アプリレベルでも、OSレベルでも、デバイスドライバレベルでも、BIOSレベルでも、バッファ無しで書き込みし、一切バッファリングしないように設定した時、だけだろう。 「ハードウェアの安全な取り外し」が何の為にあるのか考えてみるべし。 >・ファイル出力処理のclose時に例外が発生するのはどのような環境・ケースか 「アプリレベル以外の下層レベルで、誰かがバッファリングをしていて、close呼び出しによりバッファフラッシュを行ってみたら、書き出しに失敗してバッファをフラッシュ出来なかった場合」に発生する。 >・例外が発生した場合にはどんな処理をすべきか(ログ出力以外で) 「該当ファイルの削除を試みる」であろう。
お礼
なるほど。参考になりました。 ありがとうございました。