检索 File.listFiles 返回 null 时的基础错误

2022-09-03 13:36:42

根据 File.listFiles javadoc 的方法

如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回 null。

我知道我正在使用目录,但已收到结果,因此必须出现 I/O 错误。我对错误非常感兴趣。null

返回此类结果时,如何检索错误消息/代码?null


答案 1

你不能。遗憾的是,该 API 没有为您提供查找基础 I/O 错误的方法。

另请参见

  • bug 4505804:File.listFiles() 要求对返回值进行检查 - 应该有更好的错误处理

    所有方法的各种方法都具有以下烦人的功能:如果发生I / O错误,它们可能会返回。listFilesFilenull

    这种行为非常不方便,因为这意味着我不仅必须有处理s的代码(这很好),而且我还必须对结果进行额外的检查。IOExceptionnull

    更好的做法是,如果发生 I/O 错误,则始终会抛出 a。您不应使用可分辨的返回值来指示有时错误,然后也应使用其他时间 s!IOExceptionthrow Exception

    评估:我们计划在即将推出的新文件系统 API 中解决这一长期存在的问题。


答案 2

使用(在Java 7 +中),你会得到正确的异常。java.nio.file.DirectoryStream