代码之家  ›  专栏  ›  技术社区  ›  Robert Munteanu

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

  •  15
  • Robert Munteanu  · 技术社区  · 14 年前

    根据 File.listFiles javadoc

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

    null 结果,所以一定出现了I/O错误。我对错误很感兴趣。

    当出现这种情况时,如何检索错误消息/代码 无效的 返回结果?

    4 回复  |  直到 12 年前
        1
  •  7
  •   Jesse Glick    12 年前

    使用 java.nio.file.DirectoryStream (在Java7+)中),您将得到适当的异常。

        2
  •  12
  •   polygenelubricants    14 年前

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

    另请参见

    • Bug 4505804: File.listFiles() requires null check on return value - should have better error handling

      listFiles 方法 File 它们都有以下恼人的特性: 他们可能会回来 无效的 如果发生I/O错误。

      这种行为很不方便,因为它不仅意味着 我必须有处理 IOException s(这很好),但我也必须 无效的 检查结果。

      更好的行为是,如果发生I/O错误,则 IOException异常 总是 被扔了。有时不应使用可分辨的返回值 指示错误,然后也指示其他时间 throw Exception s!

      评价 :我们计划在未来几年解决这个长期存在的问题

        3
  •  3
  •   Andreas Dolk    14 年前

    据我所见 from an implementation of File ,它会回来的 null

    • 文件不是目录
    • 目录受读保护。

        4
  •  0
  •   Vladimir    10 年前

    将perm设置为文件夹311(或不带read的内容),listFiles()将返回null