我在计算机中递归搜索文件。
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;
}
解决了这个问题,但为什么这有必要呢?
答案 0 :(得分:1)
documentation状态"如果此抽象路径名不表示目录,或者发生I / O错误,则返回null。"
如果您无法访问文件系统级别的目录,那么该资格将被视为" I / O错误"所以该函数将返回null
。
如果您创建SecurityException
并将其配置为限制对该目录的访问,则只会抛出SecurityManager
。