我们的java程序不断地把一些重要的数据写入一个文件。现在,每当某个用户手动删除文件(java程序正在写入的文件)时,我们想在控制台上抛出一些异常或显示某种错误消息。
我发现java在尝试写入已删除的文件时不会抛出任何异常。
方法 I -启动一个新线程,该线程将继续检查文件是否存在,并在文件被删除时通知主 java 程序。这在我们的例子中是行不通的,因为我们将有几个 java 程序将写入的文件,因此为每个文件启动一个新线程不会节省内存。
方法 II -每次在写入文件之前检查文件是否存在。这也不是一个好方法,因为检查文件是否存在是一项成本更高的操作。
方法 III -扩展java.io.FilterWriter(我们用于写入文件)并覆盖write()方法以在尝试写入已删除的文件时抛出异常。这似乎是一个很好的解决方案,但我找不到任何地方 Java 正在消化一些异常(当它试图写入已删除的文件时),我们可以通过覆盖该方法来抛出这些异常。