1. 程式人生 > 其它 >從根目錄遍歷檔案 出現空指標異常 java.lang.NullPointerException

從根目錄遍歷檔案 出現空指標異常 java.lang.NullPointerException

用遞迴遍歷檔案的檔案

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;
                }
            }
        }
    }
}

最後成功將資料夾遍歷完成!

求大佬指點 其他的解決辦法!總覺得這樣會有問題!