无法访问的文件和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()方法查看是否可以读取文件夹。