如果此抽象路径名不表示目录,或者发生I / O错误,则返回null。
我知道我正在使用目录,但收到null
结果,因此必须出现I / O错误。我对这个错误非常感兴趣。
如果返回此类null
结果,如何检索错误消息/代码?
答案 0 :(得分:12)
你做不到。不幸的是,API没有为您提供找出基础I / O错误的方法。
File.listFiles()
requires null
check on return value - should have better error handling
listFiles
的各种File
方法都有以下烦人的功能: 如果发生I / O错误,它们可能会返回null
。这种行为非常不方便,因为它不仅意味着 我必须有处理
IOException
的代码(这很好),但我也必须这样做 对结果进行额外的null
检查。更好的行为是,如果发生I / O错误,那么总是
IOException
被抛出。您有时不应使用区分返回值 表示错误,然后是其他时间throw Exception
s!评估:我们计划在即将到来的时候解决这个长期存在的问题 新的文件系统API。
答案 1 :(得分:7)
使用java.nio.file.DirectoryStream
(在Java 7+中),您将获得适当的例外。
答案 2 :(得分:3)
从我看到的from an implementation of File,如果
,它将返回null
虽然本机代码中可能出现I / O错误,但没有“隐藏”IOException的证据。
答案 3 :(得分:0)
将perm设置为文件夹311(或者没有读取的内容),listFiles()将返回null