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

Rob*_*anu 15 java file-io

根据File.listFiles的方法javadoc

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

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

null返回这样的结果时,如何检索错误消息/代码?

pol*_*nts 12

你不能.不幸的是,API没有为您提供找出底层I/O错误的方法.

也可以看看

  • 错误4505804:File.listFiles()需要null检查返回值 - 应该有更好的错误处理

    各种listFiles方法File都具有以下特征烦人:他们可能返回null如果发生I/O错误.

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

    更好的行为是,如果发生I/O错误,那么IOException总会被抛出.您不应该使用区分返回值来指示错误,然后还有其他时间throw Exceptions!

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


Jes*_*ick 7

使用java.nio.file.DirectoryStream(在Java 7+中),您将获得适当的例外.