java - 读取jar内的txt文件

标签 java file resources embedded-resource

我已经研究过许多与我的类似的其他问题,但不幸的是,到目前为止,他们的答案都不起作用。

我有一个如下所示的 Java 项目:

MyProject/
    src/
        abc/
            MyClass.java
        xyz/
            file1.txt
            file2.txt
            ...       

Essentially, I'm trying to read all of the txt files above in MyClass.java. This is what I'm currently doing:

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();

关于java - 读取jar内的txt文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14445180/

相关文章:

java - 如何正确关闭从 FileOutputStream 获得的 FileChannel

java - 将输入保存到文件

.net - 如何使用 FileStream 读取超过 2 GB 的大文件

c - fwrite() 如何在 c 文件中工作?

java - JSF:我的应用程序中未引用 javax.faces.resources

java - 如何在 Java 中打印已经设计好的 A4 纸上的值?

java - 常量 MissingServletRequestParameterException

java - 当应用程序被破坏或进入后台时,Android 位置服务停止工作

android - BitmapDescriptorFactory 找不到源

android - 是什么导致渲染问题 : Couldn't resolve resource error in Android Studio 1. 1.0?