我在 Windows 8
上。JavadocFile#list()
声称它“如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回 null。”
现在,以“目录”(实际上是一个 NTFS 连接)“应用程序数据”(位于 C:\Users\[Username] 目录中)为例。
调用File#isDirectory()
“应用程序数据”返回true
。File#list()
但是,每次调用“应用程序数据”都会返回 null……所以这不是 I/O 错误。
基本上,这是File#isDirectory()
一个无用的调用,并迫使您检查File#list() != null
是否要确保它File
确实是一个目录。
除非我错了,否则没有其他方法可以“确定”检查文件是否实际上是目录?File#list()
如果您在文件系统上的每个文件夹上都执行此操作,这是一个非常昂贵的方法调用。
这是一个说明该问题的 Java 文件:http: //pastebin.com/ieH0xTek 它只能在 Windows 上运行。