從根目錄遍歷檔案 出現空指標異常 java.lang.NullPointerException
阿新 • • 發佈:2021-07-07
用遞迴遍歷檔案的檔案
import java.io.File; public class ShowFile { public static void main(String[] args) { File f = new File("D:\\"); showDir(f); } public static void showDir(File f){ File[] arr = f.listFiles(); for (File dir:arr) { System.out.println(dir);if(dir.isDirectory()){ showDir(dir); } } } }
結果出現空指標異常
在資料夾中檢視沒有發現這個檔案 百度之後發現是回收站的連線檔案 所以我決定跳過這個檔案
for (File dir:arr) { System.out.println(dir); if(dir.isDirectory()){ if(dir.toString().equals(f.toString() + "$RECYCLE.BIN")) continue; showDir(dir); } }
結果又碰到一個
然後我通過try{}catch(){} 將所有的異常捕獲
for (File dir:arr) { System.out.println(dir); if(dir.isDirectory()){
try {
showDir(dir);
}catch (Exception e){
System.out.println(e);
}
}
}
發現都是空指標異常
於是我決定將這三個資料夾全部跳過
import java.io.File; public class ShowFile { public static void main(String[] args) { File f = new File("D:\\"); showDir(f); } public static void showDir(File f){ File[] arr = f.listFiles(); for (File dir:arr) { System.out.println(dir); if(dir.isDirectory()){ // if(dir.toString().equals(f.toString() + "$RECYCLE.BIN")) continue; // showDir(dir); try { showDir(dir); }catch (Exception e){ // System.out.println(e); if(e.toString().equals("java.lang.NullPointerException")) continue; } } } } }
最後成功將資料夾遍歷完成!
求大佬指點 其他的解決辦法!總覺得這樣會有問題!