考虑这个标准的目录遍历代码:
static void walk(File f) throws IOException{
System.out.println(f.getPath());
if(f.isFile()) return; // leaf
File[] subs = f.listFiles(); // If it aint a file, it's a directory. Right?
if(subs == null) return; // returns null at some point
for(File subDir : subs){
walk(subDir.getAbsoluteFile());
}
}
如果我在以下目录结构上执行它:c:\ -> Folder1 -> Folder2 (=a symbolic link to c:\Folder1)
,有时会f.listFiles()
返回null
. 从文档中,listFiles
如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回 null。
显然,路径表示目录。这可能意味着发生了 I/O 错误。但是错误本身是什么?