2 回答
TA贡献1784条经验 获得超9个赞
好吧,这应该不难做到,如果你用谷歌搜索一下,你会发现一个名为 Java-File Method 的方法,file.canWrite()如果文件被其他程序锁定,它基本上会返回。
所以代码方面你可以做的是这样的。
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 不必检查 aaaaaallllllllll 时间。请参阅检查文件是否在 Java 中被锁定
其他可能性是尝试重命名文件,file.renameTo("some_path.txt");因为此方法还会返回一个布尔值是否成功!请注意,您需要在删除文件之前再次更新该文件。
我看到的最后一种可能性与第二种可能性非常相似。您尝试通过调用 If the file still exists 来删除文件,file.delete(); 您知道它不成功并因此循环。
TA贡献1799条经验 获得超8个赞
我假设你的意思是当文件没有在另一个程序中打开时,你不能对另一个程序进行更改?(如果您谈论的是您自己的程序打开文件,这就容易多了。)
在 Windows 上,很难分辨哪个程序打开了文件。查看https://superuser.com/questions/117902/find-out-which-process-is-locking-a-file-or-folder-in-windows了解一些选项。我喜欢handle
这个工具,但它必须以管理员身份运行,这可能是个问题。您可以按照Check if a file is locked in Java 中的建议尝试重命名或写入文件
一旦你有了一个脚本来确定文件是否打开到你满意的程度,编写一个循环测试文件是否打开然后删除文件的脚本应该是相当简单的。
添加回答
举报