我基本上想做一个监视服务(或类似的东西(,检查文件是否已关闭,如果文件关闭(完成执行(,则立即删除该文件。
我怎样才能做到这一点?请给我一个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 中锁定
到你满意的程度,编写一个脚本应该相当简单,该脚本在测试文件是否打开时循环,然后删除文件。