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 中的建議嘗試重命名或寫入文件
一旦你有了一個腳本來確定文件是否打開到你滿意的程度,編寫一個循環測試文件是否打開然后刪除文件的腳本應該是相當簡單的。
添加回答
舉報