Java 读取包含在jar中的文件
我有一个jar文件,比如archive1.jar,位于/home/ext/libs中。它有几个类,在jar层次结构的根目录下还有一个文本文件(data.txt)。这个jar的一个类(比如Data.java)读取文件以启动一些内部数据结构 现在,archive1.jar被作为另一个程序的库包含,称为解析,该程序在一个完全不同的目录/home/progs中执行(archive1.jar在程序执行命令的类路径中指定) 我面临的问题是,现在Data.java无法再理解Data.txt的路径,因为它假定Data.txt驻留在/home/progs中,而不是/home/ext/libs中的archive1.jar中 我的问题是,我应该在Data.java中做什么更改,以便它理解Data.txt在archive1.jar中?简而言之,如何使Data.java能够读取archive1.jar中的Data.txt,而不管调用程序在哪里Java 读取包含在jar中的文件,java,jar,path,embedded-resource,readfile,Java,Jar,Path,Embedded Resource,Readfile,我有一个jar文件,比如archive1.jar,位于/home/ext/libs中。它有几个类,在jar层次结构的根目录下还有一个文本文件(data.txt)。这个jar的一个类(比如Data.java)读取文件以启动一些内部数据结构 现在,archive1.jar被作为另一个程序的库包含,称为解析,该程序在一个完全不同的目录/home/progs中执行(archive1.jar在程序执行命令的类路径中指定) 我面临的问题是,现在Data.java无法再理解Data.txt的路径,因为它假定D
注意:在threadJava resource as file中,事情有点不同,而且对于如何读取jar中的文件也没有答案。有人说这可能是不可能的。访问
JAR
存档中的资源文件的方法是使用getClass().getResourceAsStream()
。使用此选项可以确保资源是从归档文件加载的,而不是从文件系统加载的。例如,如果您在JAR
归档文件中的data.txt
位置与data.java
位置相同,那么您可以通过这种方式访问data.txt
InputStream is=getClass().getResourceAsStream("data.txt");
一旦您获得了资源的
InputStream
,就可以按照您喜欢的方式进行操作。我们可以看到一些代码吗?我查看了“Java资源作为文件”线程,但没有找到合适的答案。这是代码。java内部有BufferedReader br=new BufferedReader(new FileReader(“Data.txt”));这个Data.java位于archive1.jar中,而archive1.jar又位于/home/ext/libsHow中。当Q(以及它的副本)告诉您要做什么,而您根本没有做什么时,您是否找不到适当的答案?我想你要找的是getResourceAsStream;other.jar our.com.Main在清单中指定或通过相对路径指定。