我有一个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中的文件也没有答案。有人说这可能是不可能的。
答案 0 :(得分:2)
访问JAR
档案中的资源文件的方法是使用getClass().getResourceAsStream()
。使用它可确保从归档加载资源而不是从文件系统加载资源。例如,如果data.txt
与Data.java
存档中的JAR
位于同一位置,那么您将以这种方式访问data.txt
InputStream is=getClass().getResourceAsStream("data.txt");
获得InputStream
资源后,按照您喜欢的方式继续。