为什么我这样遍历文件的代码遍历盘符不会报空指针异常?(语言-java)

问题遇到的现象和发生背景

在上课用课件代码也就是最常见的代码遍历文件时,如果遍历盘符就会报空指针异常。自己按另一个思路写了一下没有爆出异常,但是代码结构都是差不多的,想知道为什么

问题相关代码,请勿粘贴截图
public static void main(String[] args) {
    long l = System.nanoTime();
    Set<String> fileSet=new HashSet<>();
    List<File> method = method(new File("D:\\Develop"));
    System.out.println(method.size());
    for (File file : method) {
        if (file.getName().contains(".")) {
            String[] split = file.getName().split("\\.");
            fileSet.add(split[1]);
        }
    }
    Map<String,Integer> fileMap=new HashMap<>();
    for (String s : fileSet) {
        fileMap.put(s,0);
    }
    for (File file : method) {
        if (file.getName().contains(".")) {
            String[] split = file.getName().split("\\.");
            fileMap.put(split[1],fileMap.get(split[1])+1);
        }
    }
    System.out.println(fileSet.size());
    System.out.println(fileMap.size());
    fileMap.entrySet().stream().sorted((a,b)->b.getValue()-a.getValue()).forEach((a)-> System.out.println(a.getKey()+"类型的文件有"+a.getValue()+"个"));
    long l1=System.nanoTime();
    System.out.println(l1-l);
}

static ArrayList<File> fileList = new ArrayList();

static List<File> method(File file) {
    for (File listFile : file.listFiles()) {
        if (listFile.isFile()) {
            fileList.add(listFile);
        } else {
            if (listFile.listFiles() != null) {
                method(listFile);
            }
        }
    }
    return fileList;
}
运行结果及报错内容
我的解答思路和尝试过的方法

不直接修改map集合,用Set集合存储后缀文件类型,再给到map集合获取集合大小,最后改变值达到目的

我想要达到的结果

因为遍历时存在空文件对象,导致空指针异常。
对于报错的地方,进行为空判断就行。

我写过一个文件扫描和文件中查找的工具类,感兴趣你可以看看

说实话没看懂你的HashSet里面到底存了个什么
把每个文件按点拆开,只存点后面的部分,那难道不是扩展名吗,你把所有扩展名放到HashSet里是要干什么