在我的文件系统中搜索文件时,我的程序抛出了空指针异常,因为File.list()无法访问我的文件系统上的“Documents And Settings”并试图解析String [] myArray = File.list ()当myArray为null时抛出异常。
如何检查文件或文件夹是否无法使用文件进行访问并防止其发生?
答案 0 :(得分:7)
file.isDirectory()
将告诉您File
对象是否代表目录。
listFiles()
的文档提到如果null
不代表目录,它将返回File
。此外,您需要与file.canRead()
核实应用程序是否可以读取目录。
但是File
API在这里非常糟糕,因为如果存在I / O问题,它可以返回null
。因此,您通常会抓住IOException
,在这里您应该检查null
。例如,Apache commons-io FileUtils
正好使用这种方法:
File[] found = directory.listFiles(filter);
if (found != null) {...}
答案 1 :(得分:3)
就是不要这样做。恕我直言,唯一理智的方式就像是
String[] files = file.list();
if (files!=null) {
for (String f : files) processFile(f);
}
它始终有效并避免额外的系统调用。任何其他方法需要更多时间并且可能在例如权限在两者之间发生变化。对于file!=null
,表达式file.listFiles()
保证永不失败。
答案 2 :(得分:0)
您可以使用canRead()
方法查看是否可以阅读文件夹。