我如何制作一个在文件关闭时删除文件的监视服务



我基本上想做一个监视服务(或类似的东西(,检查文件是否已关闭,如果文件关闭(完成执行(,则立即删除该文件。

我怎样才能做到这一点?请给我一个cmd命令或一些代码(我更喜欢Java(。

好的,这应该不难做到,如果你谷歌一下,你会发现一个名为file.canWrite()的Java文件方法,如果一个文件被其他程序锁定,它基本上会返回。

所以从代码上讲,你可以做的是这样的。

boolean isDeleted = false;
File f = new File (// Put your file here);
while (!isDeleted) {
    if (f.canWrite()) {
        f.delete();
        isDeleted = true;
    } else {
        try {
            Thread.sleep(10); // Throws Exception you need to catch somewhere...
        } catch (Exception e) {}
    }
}

您需要将此代码包含在某个Java程序中。我添加了一个简单的Thread.sleep(10),您的PC不必检查aaaaallll的时间。请参阅检查文件是否在 Java 中被锁定

另一种可能性是尝试使用 file.renameTo("some_path.txt"); 重命名文件,因为此方法还会返回布尔值是否成功!请注意,您需要在删除文件之前再次更新文件。

我看到的最后一个可能性与第二种可能性非常相似。您尝试通过调用 file.delete(); 删除该文件 如果文件仍然存在,您就知道它不成功并因此循环。

我假设你的意思是文件没有在另一个程序中打开,并且您无法对另一个程序进行更改?(如果您谈论的是自己的程序打开文件,这要容易得多。

在Windows上,要判断哪个程序打开了文件并不容易。查看 https://superuser.com/questions/117902/find-out-which-process-is-locking-a-file-or-folder-in-windows 以获取一些选项。我喜欢这个handle工具,但它必须以管理员身份运行,这可能是一个问题。您可以尝试重命名或写入文件,如检查文件是否在 Java 中锁定

一旦你有一个脚本来确定文件是否打开

到你满意的程度,编写一个脚本应该相当简单,该脚本在测试文件是否打开时循环,然后删除文件。

相关内容

  • 没有找到相关文章

最新更新