Java File.listFiles抛出空指针

Java File.listFiles抛出空指针,java,file,nullpointerexception,Java,File,Nullpointerexception,我正在计算机中递归搜索一个文件 private static File findFileDepthSearch(File dir, String fileName) { File[] files = dir.listFiles(); for (File f : files) { if (f.getName().equalsIgnoreCase(fileName)) { return f; } } for (

我正在计算机中递归搜索一个文件

 private static File findFileDepthSearch(File dir, String fileName) {
    File[] files = dir.listFiles();
    for (File f : files) {
        if (f.getName().equalsIgnoreCase(fileName)) {
            return f;
        }
    }
    for (File f : files) {
        if (f.isDirectory()) {
            File res = findFileDepthSearch(f, fileName);
            if(res != null)
            {
                return res;
            }
        }
    }
    return null;
}
深入两级后,dir.listFiles返回null。但是,情况不应该如此,因为所讨论的文件实际上是一个目录。当我尝试在控制台中输入它时,它说拒绝访问,但根据javadocs安全问题应该抛出一个异常。我错过了什么? 将此添加到

if(files==null)
    {
        return null;
    }
修复了此问题,但为什么必须这样做?

如果此抽象路径名不表示目录,或者如果发生I/O错误,则状态将返回null

如果您没有文件系统级别的目录访问权限,则这将被视为I/O错误,因此函数将返回null


只有在创建SecurityManager并将其配置为限制对该目录的访问时,它才会抛出SecurityException。

实际上,listFiles可能返回null。简单地检查一下。lol可能重复这不是一个重复的问题