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可能重复这不是一个重复的问题