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