程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 文件權限-我用java寫的深層刪除D盤下所有空文件夾代碼為什麼老是報錯呢?

文件權限-我用java寫的深層刪除D盤下所有空文件夾代碼為什麼老是報錯呢?

編輯:編程解疑
我用java寫的深層刪除D盤下所有空文件夾代碼為什麼老是報錯呢?

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;
            }
    }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved