次の標準的なディレクトリ トラバーサル コードを検討してください。
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 エラーが発生したことを意味します。しかし、エラー自体は何ですか?