File.listFiles抛出NullPointer

时间:2018-04-27 15:27:08

标签: 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 (File f : files) {
        if (f.isDirectory()) {
            File res = findFileDepthSearch(f, fileName);
            if(res != null)
            {
                return res;
            }
        }
    }
    return null;
}

深入两级后,dir.listFiles会返回null。但是,情况并非如此,因为有问题的文件实际上是一个目录。当我尝试在控制台中输入它时,它表示 Acess denied ,但根据javadocs安全问题应该抛出异常。我在这里错过了什么? 在

中添加此内容
if(files==null)
    {
        return null;
    }

解决了这个问题,但为什么这有必要呢?

1 个答案:

答案 0 :(得分:1)

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

如果您无法访问文件系统级别的目录,那么该资格将被视为" I / O错误"所以该函数将返回null

如果您创建SecurityException并将其配置为限制对该目录的访问,则只会抛出SecurityManager