2012-06-11 243 views
0

我需要刪除包含一些文件的目錄。我正在使用以下代碼:文件#刪除不刪除文件

public static void delete(File f) { 
    if (f.isDirectory()) { 
    for (File c : f.listFiles()) { 
     delete(c); 
    } 
    } 
    f.setWritable(true); 
    f.delete(); 
} 

由於某些原因,目錄中的某些文件,因此目錄不會被刪除。這種行爲可能的原因是什麼?我該如何解決這個問題?

+0

它們可以被其他進程或你的進程使用和鎖定。或者你可能根本沒有權利。 –

+0

問題解決了嗎? –

+0

我按照[這個線程](http://stackoverflow.com/questions/991489/i-cant-delete-a-file-in-java)的建議調用了System.gc()',它工作正常。 – missingfaktor

回答

1

假設你已經向目錄寫入權限,可能是文件在某處打開。試圖刪除未正確關閉的文件是刪除奇怪失敗的常見原因。程序存在後,您會發現該文件可以被刪除。

+0

有問題的文件不可能打開。它的祖父母是。但我不知道這是否應該是一個問題。 – missingfaktor

+0

我按照[這個線程](http://stackoverflow.com/questions/991489/i-cant-delete-a-file-in-java)的建議調用了'System.gc()',它工作正常。 – missingfaktor

+0

這意味着有一些文件被丟棄而未被關閉。解決方案是確保文件總是在'finally'塊中關閉,以便在引發異常時甚至關閉文件。或者使用Java 7的ARM。 –