java - File.listFiles 抛出 NullPointer

标签 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。然而,情况不应该是这样,因为有问题的文件实际上是一个目录。当我尝试在控制台中输入它时,它显示访问被拒绝,但根据 javadocs 安全问题应该引发异常。我在这里缺少什么? 将其添加到

if(files==null)
    {
        return null;
    }

解决了问题,但为什么这是必要的?

最佳答案

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

如果您无权访问文件系统级别的目录,则视为“I/O 错误”,因此该函数将返回 null

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

关于java - File.listFiles 抛出 NullPointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50065645/

相关文章:

java - Android 中 findViewById() 上的 NullPointerException

java - Json String - 如何在字符串中添加变量

java - 将 uri 转换为位图时出现 "No content provider execution "错误

c - C语言如何读取文件并存入数组?

java - 什么是 NullPointerException,我该如何解决?

android - TextView 返回 null

java - 将项目添加到 JComboBox 时发出警告

java - 用于创建抽象类(而不是接口(interface))代理的 java.lang.reflect.Proxy 的替代品

java - 如何检查图像是否存在于特定位置?

shell - 使用 awk 读取文件并搜索另一个文件