读取一个包含在jar中的文件

时间:2013-06-19 01:11:36

标签: java jar path embedded-resource readfile

我有一个jar文件,比如 archive1.jar ,位于 / home / ext / libs 。这有几个类,还有一个文本文件( data.txt ),位于jar层次结构的根目录下。这个jar的一个类(比如 Data.java )读取文件以启动一些内部数据结构。

现在,archive1.jar作为另一个程序的库包含在内,名为解析,它在一个完全不同的目录 / home / progs (archive1。 jar在程序执行命令的类路径中指定。

我面临的问题是现在Data.java无法理解data.txt的路径,因为它假设data.txt位于 / home / progs 而不是在archive1中。 jar在 / home / ext / libs 中。

我的问题是我应该在 Data.java 中进行哪些更改,以便了解 data.txt 是否在archive1.jar中?简而言之,无论调用程序在哪里,如何使Data.java能够读取archive1.jar中的data.txt。

注意:在线程 Java资源作为文件中,事情有点不同,而且如何读取jar中的文件也没有答案。有人说这可能是不可能的。

1 个答案:

答案 0 :(得分:2)

访问JAR档案中的资源文件的方法是使用getClass().getResourceAsStream()。使用它可确保从归档加载资源而不是从文件系统加载资源。例如,如果data.txtData.java存档中的JAR位于同一位置,那么您将以这种方式访问​​data.txt

InputStream is=getClass().getResourceAsStream("data.txt");

获得InputStream资源后,按照您喜欢的方式继续。