从根目录遍历文件 出现空指针异常 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;
                }
            }
        }
    }
}

最后成功将文件夹遍历完成!

求大佬指点 其他的解决办法!总觉得这样会有问题!

posted @ 2021-07-07 15:41  黎沐不吃香菜  阅读(249)  评论(0)    收藏  举报