Java - 如何在写入文件时检测文件删除?

Yat*_*oel 11 java io filewriter writer

我们的java程序不断地将一些重要数据写入文件.现在我们想要在某些用户手动删除文件(java程序正在编写的文件)时抛出一些异常或在控制台上显示某种错误消息.

我发现java在尝试写入已删除的文件时不会抛出任何异常.

方法I -启动一个新线程,该线程将继续检查文件是否存在,并在删除文件时通知主java程序.这在我们的情况下不起作用,因为我们将有几个java程序将要编写的文件,因此为每个文件启动一个新线程将不具有内存效率.

方法II -每次在写入文件之前检查文件是否存在.这也不是一个好方法,因为检查文件存在是一个更昂贵的操作.

方法III -扩展java.io.FilterWriter(我们用来写入文件)并覆盖write()方法,以便在尝试写入已删除的文件时抛出异常.这似乎是一个很好的解决方案,但我找不到任何地方Java正在消化一些异常(当它试图写入已被删除的文件时),我们可以通过覆盖该方法抛出.