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

listFiles() 在以下情況返回 null:
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。