私たちの Java プログラムは、いくつかの重要なデータを継続的にファイルに書き込みます。ここで、(java プログラムが書き込んでいる) ファイルがユーザーによって手動で削除されるたびに、何らかの例外をスローするか、何らかのエラー メッセージをコンソールに表示したいと考えています。
削除されたファイルに書き込もうとしても、Java は例外をスローしないことがわかりました。
方法 I -ファイルが存在するかどうかをチェックし続ける新しいスレッドを開始し、ファイルが削除されたときにそのことをメインの Java プログラムに通知します。私たちの場合、Java プログラムが書き込むファイルがいくつかあるため、これは機能しません。すべてのファイルに対して新しいスレッドを開始すると、メモリ効率が低下します。
方法 II -ファイルに書き込む直前に毎回ファイルの存在を確認します。また、ファイルの存在を確認するのはコストのかかる操作であるため、これも適切な方法ではありません。
方法 III - java.io.FilterWriter (ファイルへの書き込みに使用) を拡張し、 write()メソッドをオーバーライドして、削除されたファイルに書き込みを試みるたびに例外をスローします。これは良い解決策のようですが、そのメソッドをオーバーライドすることでスローできる例外 (削除されたファイルに書き込もうとしたとき) を Java が消化している場所が見つかりませんでした。