在我的應用程序中,我編寫了從驅動器中刪除目錄的代碼,但是當我檢查File的刪除功能時,它不會刪除該文件。我已經寫了一些這樣的事無法通過Java刪除目錄
//Code to delete the directory if it exists
File directory = new File("c:\\Report\\");
if(directory.exists())
directory.delete();
的directoryis不使用的仍是不能夠刪除目錄
在我的應用程序中,我編寫了從驅動器中刪除目錄的代碼,但是當我檢查File的刪除功能時,它不會刪除該文件。我已經寫了一些這樣的事無法通過Java刪除目錄
//Code to delete the directory if it exists
File directory = new File("c:\\Report\\");
if(directory.exists())
directory.delete();
的directoryis不使用的仍是不能夠刪除目錄
鎖定,目錄刪除僅適用於空目錄,whi CH導致像下面的方法:
/**
* Force deletion of directory
* @param path
* @return
*/
static public boolean deleteDirectory(File path) {
if (path.exists()) {
File[] files = path.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
deleteDirectory(files[i]);
} else {
files[i].delete();
}
}
}
return (path.delete());
}
這一個會刪除你的文件夾,即使非空,沒有煩惱(當該目錄是由OS鎖定除外)。
的目錄必須是空的將其刪除。如果不是空的,你需要與File.listFiles()和File.delete()
兩個其他的可能性(除了目錄不爲空)遞歸刪除:
望着文檔:
如果此路徑名錶示一個目錄,然後將目錄必須是爲了空被刪除。
你確定目錄是空的(沒有隱藏的文件)嗎?
爲什麼要用遞歸方法刪除輪子?看看Apache Commons io。 https://commons.apache.org/proper/commons-io/javadocs/api-1.4/
FileUtils.deleteDirectory(dir);
OR
FileUtils.forceDelete(dir);
這就是你所需要的。 還有很多有用的方法來操縱文件...
愛,當有東西已經寫好。完全同意。感謝您的提醒。 – Aaron 2012-02-10 17:41:39
FileUtils#deleteDirectory和FileUtils#forceDelete實現它也遞歸地執行... – 2012-06-11 09:07:45