读取 jar 中的 txt 文件



我已经看过许多其他与我相似的问题,但不幸的是,到目前为止,他们的答案都没有奏效。

我有一个看起来像这样的Java项目:

我的项目/   来源/       ABC/           我的班级.java        xyz/           文件1.txt            文件2.txt            ...      

从本质上讲,我正在尝试以MyClass.java读取上面的所有 txt 文件。这是我目前正在做的事情:

File dir = new File("src/xyz/");
for (File child : dir.listFiles()) {
    ...
}

这工作正常,直到我将所有内容放入 JAR 格式,此时dir.listFiles()返回null并且上述内容不再有效。无论如何,即使这些txt文件打包到JAR中,我仍然可以读取它们吗?另外,如果它有任何不同,我正在使用Eclipse。

您可以通过类装入器访问类路径上的文件。

getClass().getResourceAsStream("/xyz/file1.txt");

然后,您将像往常一样使用该InputStream。请注意,我使用绝对路径,但相对于当前包也可以。

从Java 6开始,也可以很容易地列出包下的所有资源:

 Enumeration urls = getClass().getClassLoader().getResources("xyz");
 urls.nextElement().openStream();

无论如何,即使这些txt文件打包到JAR中,我仍然可以读取它们吗?

鉴于你的意思是"事先不知道他们的名字"不。

OTOH 您可以在 Jar 中的已知位置包含资源,并在其中列出可能的文本。 来自根路径或类路径的路径,每行一个会很好用。 使用以下方法获取资源的 URL:

URL url = this.getClass().getResource("/path/to/the.resource");

相关内容

  • 没有找到相关文章

最新更新