访问 jar 文件中的文件?

2022-09-03 09:32:26

我需要能够访问存储在已编译的jar文件中的文件。我已经弄清楚了如何将文件添加到项目中,但是如何在代码中引用它?如何将文件从 jar 文件复制到用户硬盘驱动器上的某个位置?我知道有几十种方法可以访问文件(FileInputStream,FileReader等),但我不知道如何查看内部。


答案 1

你可以使用类似这样的东西:

InputStream is = this.getClass().getClassLoader().getResourceAsStream(fileFromJarFile);

如果 foo.txt 位于 JAR 文件的根目录中,则可以使用:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("foo.txt");

我相信,假设该类与资源位于同一JAR文件中。


答案 2

您可以使用 getResource() 获取类路径上文件的 URL,或者使用 getResourceAsStream() 来获取 InputStream。

例如:

BufferedReader reader = new BufferedReader(new InputStreamReader(
    this.getClass().getResourceAsStream("foo.txt")));