【问题标题】: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.
【问题讨论】:
标签:
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())。
但是我不确定是否可以根据需要将它们用于文件列表,它们主要用于从类路径中检索单个资源。