File.listFiles返回null时检索基础错误
根据File.listFiles的方法javadoc
如果此抽象路径名不表示目录,或者发生I / O错误,则返回null。
我知道我正在使用一个目录,但是收到了一个null
结果,因此必须出现I / O错误。 我对这个错误非常感兴趣。
当返回这样的null
结果时,如何检索错误消息/代码?
使用java.nio.file.DirectoryStream
(在Java 7+中),您将获得正确的exception。
你不能。 不幸的是,API没有为您提供找出底层I / O错误的方法。
也可以看看
- 错误4505804:File.listFiles
File.listFiles()
要求对返回值进行null
检查 – 应该有更好的error handling
File
的各种listFiles
方法都具有以下恼人的特性:如果发生I / O错误,它们可能会返回null
。这种行为非常不方便,因为这意味着我不仅必须拥有处理
IOException
的代码(这很好),而且我还必须对结果进行额外的null
检查。更好的行为是,如果发生I / O错误,则总会抛出
IOException
。 您不应该使用区分返回值来指示错误,然后还有其他时间throw Exception
!评估 :我们计划在即将推出的新文件系统API中解决这个长期存在的问题。
从我从File的实现中看到的,如果是 ,它将返回null
- 该文件不是目录或
- 该文件不存在或
- 该目录是读保护的。
尽管本机代码中可能发生I / O错误,但没有“隐藏”IOException的证据。
将perm设置为文件夹311(或者没有读取的东西),listFiles()将返回null