public Class DeleteDir{
public static void main(String[]args){
File dir = new File("D:\");
deletedir(dir);
}
public static void deletedir(File dir){
File[] files = dir.listFiles();
if(files.length==0)
dir.delete;
else
for(File file:files){
if(file.isDirectory())
deletedir(file);
else
continue;
}
}
}
功能上確實把一些空文件夾刪除了,我也沒去看有沒有全部刪除,但是運行一段時間之後會在判斷數組長度是否為0那裡報錯。這是為什麼呢?是因為系統文件或其他什麼的權限不夠嗎?
多看看api文檔,就知道了
listFiles
public File[] listFiles()返回一個抽象路徑名數組,這些路徑名表示此抽象路徑名所表示目錄中的文件。
如果此抽象路徑名並不表示一個目錄,則此方法將返回 null。否則,為目錄中的每個文件或目錄返回一個 File 對象數組。表示目錄本身及其父目錄的路徑名不包括在結果中。得到的每個抽象路徑名都是根據此抽象路徑名,使用 File(File, String) 構造方法構造。所以,如果此路徑名是絕對路徑名,則得到的每個路徑名都是絕對路徑名;如果此路徑名是相對路徑名,則得到的每個路徑名都是相對於同一目錄的路徑名。
不保證所得數組中的相同字符串將以特定順序出現,特別是不保證它們按字母順序出現。
返回:
表示此抽象路徑名所表示目錄中的文件和目錄的抽象路徑名數組。如果目錄為空,則數組也將為空。如果抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null。
public static void deletedir(File dir){
File[] files = dir.listFiles();
if(files==null)return;//如果抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null。
if(files.length==0)//空文件夾
dir.delete;
else
for(File file:files){
if(file.isDirectory())
delitedir(file);
else
continue;
}
}