首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 遞歸刪除空文件夾:listFiles() 返回 null 導致空指針修復

     編輯:程式設計疑難解答

錯誤代碼

File[] files = dir.listFiles();
if (files.length == 0) dir.delete(); // 若 files 為 null 此處拋 NPE

報錯截圖:

NPE

原因與修正

listFiles() 在以下情況返回 null:

  • 路徑不是目錄。
  • 發生 I/O 錯誤(如權限不足、系統目錄無法讀取)。

D 盤根目錄包含系統隱藏文件、權限受限目錄,遍歷時遇到無法讀取的目錄返回 null,導致 files.length 拋 NPE。

修正代碼

public static void deleteDir(File dir) {
    File[] files = dir.listFiles();
    if (files == null) return; // 關鍵:非目錄或無權限直接返回
    if (files.length == 0) {
        dir.delete();
    } else {
        for (File file : files) {
            if (file.isDirectory()) deleteDir(file);
        }
    }
}

建議:刪除前先判斷 dir.isDirectory(),捕獲 SecurityException。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved