Java 当File.listFiles返回null时检索基础错误
根据该方法 如果此抽象路径名不表示目录,或者发生I/O错误,则返回null 我知道我正在使用一个目录,但收到了一个Java 当File.listFiles返回null时检索基础错误,java,file-io,Java,File Io,根据该方法 如果此抽象路径名不表示目录,或者发生I/O错误,则返回null 我知道我正在使用一个目录,但收到了一个null结果,因此一定出现了I/O错误。我对错误是什么很感兴趣 当返回这样的null结果时,如何检索错误消息/代码?您不能。不幸的是,API没有为您提供一种了解底层I/O错误的方法 另见 File的各种listFiles方法都有以下恼人的特性: 如果发生I/O错误,它们可能返回null 这种行为非常不方便,因为这意味着 我必须有处理IOExceptions的代码(这很好),但我也
null
结果,因此一定出现了I/O错误。我对错误是什么很感兴趣
当返回这样的
null
结果时,如何检索错误消息/代码?您不能。不幸的是,API没有为您提供一种了解底层I/O错误的方法
另见
-
的各种File
方法都有以下恼人的特性: 如果发生I/O错误,它们可能返回listFiles
这种行为非常不方便,因为这意味着 我必须有处理null
s的代码(这很好),但我也必须 对结果执行额外的IOException
检查 更好的行为是,如果发生I/O错误,则总是出现null
被抛出。有时不应使用可分辨返回值来 指示错误,然后在其他时间IOException
s 评估:我们计划在未来几年内解决这一长期存在的问题 新的文件系统API抛出异常
- 该文件不是目录或
- 文件不存在或
- 该目录受读保护
尽管本机代码中可能会发生I/O错误,但没有“隐藏”IOException的证据。使用
java.nio.file.DirectoryStream
(在java 7+中),您将获得适当的异常。将perm设置为文件夹311(或未读取的内容),并且listFiles()将返回nulljavadoc没有说明I/O异常,但是发生I/O错误。这表明没有本机错误->异常转换。