如何读取jar中的某个文本文件的内容?

时间:2023-02-11 07:40:47
当前工程中有个jar, 该jar已经在JVM启动时,装载到jvm内存中
该jar中含有一个test.txt. 我如何通过java程序来读取该jar的test.txt的内容呢?

另外,我的jar会被部署到某个陌生环境下的tomcat下
该jar的绝对目录会是未知的
那么我该如何通过java来找到jar中的test.txt呢?有如何读取其内容呢?

鄙人才学疏浅,各位能否从 
1. System大类族中找到解决方案?
2. 反射中找到解决方案?
3. JMX中找到解决方案?

3 个解决方案

#1


包含txt文件的jar包,这个应该是你自己写的类打包的Jar吧。你可以写一个辅助类放入jar包中,并规范jar中只能在某目录中存放txt文件。然后辅助类中提供一个接口供外界调用。外界通过传入一个文件名称或相对路径,由该类自己去获取相应的输入流提供给外界操作。
PS:你这个操作实际项目中很少会这么干=。=

#2


貌似Java已经有解决方案了。
比如读取com.my.test包下的test.txt文件:

Scanner sc = new Scanner(ClassLoader.getSystemClassLoader().getResourceAsStream("com/my/test/test.txt"));
while(sc.hasNextLine()) {
System.out.println(sc.nextLine());
}
sc.close();


像这样,能读取到加入classpath中的资源。(我是在SE中试的,应该在Tomcat里面也能用)。

#3


学习了~~~

#1


包含txt文件的jar包,这个应该是你自己写的类打包的Jar吧。你可以写一个辅助类放入jar包中,并规范jar中只能在某目录中存放txt文件。然后辅助类中提供一个接口供外界调用。外界通过传入一个文件名称或相对路径,由该类自己去获取相应的输入流提供给外界操作。
PS:你这个操作实际项目中很少会这么干=。=

#2


貌似Java已经有解决方案了。
比如读取com.my.test包下的test.txt文件:

Scanner sc = new Scanner(ClassLoader.getSystemClassLoader().getResourceAsStream("com/my/test/test.txt"));
while(sc.hasNextLine()) {
System.out.println(sc.nextLine());
}
sc.close();


像这样,能读取到加入classpath中的资源。(我是在SE中试的,应该在Tomcat里面也能用)。

#3


学习了~~~