防止和检测删除打开的文件

时间:2018-01-19 18:30:32

标签: java file delete-file

我的Java程序打开一个文件并慢慢写入该文件。操作完成后,程序将关闭文件并将文件移动到另一个目录中的最终安放位置。问题是,当操作正在运行时,同一Java程序中的另一个线程将删除该文件。

Windows在打开文件时不允许删除文件。 Linux允许在打开时删除文件。在NFS文件系统上,Linux将重命名该文件,然后在文件关闭时自动删除该文件。如何防止文件在打开时删除?

如何找出删除文件的内容?如何在我的程序中获取正在删除文件的Java线程的调用堆栈?

由于同一进程中的另一个线程正在删除该文件,因此更改文件所有者将无效。

程序正在主动写入文件,因此删除文件的写入权限将不起作用。删除目录的写入权限也不起作用,因为该目录正在创建和删除其他文件。

该程序有185k行代码。整个代码中有许多调用File.delete()。我可以在File.delete()Files.delete()等设置断点。但是,该程序正在快速创建和删除大量文件。这会产生很多断点命中,将针埋在大海捞针中。我可以让断点有条件但是程序运行得非常慢。

0 个答案:

没有答案