【问题标题】:listFiles() method in Java doesn't work in .jarJava 中的 listFiles() 方法在 .jar 中不起作用
【发布时间】:2019-01-29 01:26:59
【问题描述】:

我的项目中有一个“图片”文件夹,如下所示: link

我想查找其中一些文件夹中的文件数。

我正在使用: int length = new File("./Pictures/1").listFiles().length 当我运行 IDE 时效果很好。但是,当我将项目转换为 .jar 文件时,我得到一个 NullPointerException.

【问题讨论】:

  • 给出绝对文件路径并检查
  • 图片文件夹相对于jar文件在哪里?

标签: java file jar io directory


【解决方案1】:

您不能将 File 与 jar 条目一起使用。您必须找到 jar 文件并将其视为 zip 文件。

【讨论】:

    【解决方案2】:

    您使用文件夹的相对路径,当您从 IDE 运行时,相对路径可以正常工作,因为它们是相对于项目根目录的。 但是当你运行 jar 时,JVM 假定相对路径是相对于 jar 所在目录的。

    如果您只想检查File.listFiles() 的工作方式,则可以使用该文件夹的完整路径。

    【讨论】:

      【解决方案3】:

      jar 文件基本上是一个 zip 文件。您的代码将在文件系统上查找Pictures 目录,而不是在 jar 文件中。要访问 jar 文件中的文件(也适用于 jar 之外,它从类路径搜索),您可以使用 Class.getResource()(和 getResourceAsStream())。

      但是我不确定是否可以根据需要将它们用于文件列表,它们主要用于从类路径中检索单个资源。

      【讨论】:

        猜你喜欢
        • 2018-07-06
        • 2015-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多