2 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
好吧,這應(yīng)該不難做到,如果你用谷歌搜索一下,你會(huì)發(fā)現(xiàn)一個(gè)名為 Java-File Method 的方法,file.canWrite()如果文件被其他程序鎖定,它基本上會(huì)返回。
所以代碼方面你可以做的是這樣的。
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 程序中。我添加了一個(gè)簡(jiǎn)單的說(shuō)明Thread.sleep(10),即您的 PC 不必檢查 aaaaaallllllllll 時(shí)間。請(qǐng)參閱檢查文件是否在 Java 中被鎖定
其他可能性是嘗試重命名文件,file.renameTo("some_path.txt");因?yàn)榇朔椒ㄟ€會(huì)返回一個(gè)布爾值是否成功!請(qǐng)注意,您需要在刪除文件之前再次更新該文件。
我看到的最后一種可能性與第二種可能性非常相似。您嘗試通過(guò)調(diào)用 If the file still exists 來(lái)刪除文件,file.delete(); 您知道它不成功并因此循環(huán)。

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
我假設(shè)你的意思是當(dāng)文件沒(méi)有在另一個(gè)程序中打開(kāi)時(shí),你不能對(duì)另一個(gè)程序進(jìn)行更改?(如果您談?wù)摰氖悄约旱某绦虼蜷_(kāi)文件,這就容易多了。)
在 Windows 上,很難分辨哪個(gè)程序打開(kāi)了文件。查看https://superuser.com/questions/117902/find-out-which-process-is-locking-a-file-or-folder-in-windows了解一些選項(xiàng)。我喜歡handle
這個(gè)工具,但它必須以管理員身份運(yùn)行,這可能是個(gè)問(wèn)題。您可以按照Check if a file is locked in Java 中的建議嘗試重命名或?qū)懭胛募?a >
一旦你有了一個(gè)腳本來(lái)確定文件是否打開(kāi)到你滿(mǎn)意的程度,編寫(xiě)一個(gè)循環(huán)測(cè)試文件是否打開(kāi)然后刪除文件的腳本應(yīng)該是相當(dāng)簡(jiǎn)單的。
添加回答
舉報(bào)