Java 从jar读取文本文件
我在从jar中读取文本文件时遇到问题。我在解压时管理了它,但现在我已经存档了,它无法工作。 罐子有:Java 从jar读取文本文件,java,file,text,jar,Java,File,Text,Jar,我在从jar中读取文本文件时遇到问题。我在解压时管理了它,但现在我已经存档了,它无法工作。 罐子有: BTA.jar Splash.class *.类 Splash.txt 等等 现在,我正在使用BufferedReader和FileReader f = new FileReader("Splash.txt"); in = new BufferedReader(f); 但通过谷歌搜索,我知道它只从jar外部读取文件 我的问题是:如何从jar内部读取文件?假设您正在执行BTA.jar
- BTA.jar
- Splash.class
- *.类
- Splash.txt
- 等等
f = new FileReader("Splash.txt");
in = new BufferedReader(f);
但通过谷歌搜索,我知道它只从jar外部读取文件
我的问题是:如何从jar内部读取文件?假设您正在执行
BTA.jar
,您可以使用
InputStream in = YourClass.class.getResourceAsStream("/Splash.txt");
检索InputStream
并通过InputStreamReader
将其传递给BufferedReader
传递给方法的路径的格式规则在javadoc中为
类定义。问题在于Splash.txt
不是一个文件,它的字节序列在一个(轻微的)压缩文件中,该文件在Jar/Zip标准指定的目录中有一个命名条目
这意味着您可以使用FileReader
来读取文件,例如,您需要通过Class
资源管理API来访问文件
getClass().getResourceAsStream("/Splash.txt");
或者,如果您试图从static
上下文中读取它
Splash.class.getResourceAsStream("/Splash.txt");
不要忘记,当您完成时,您将负责关闭InputStream
,例如
try (InputStream is = getClass().getResourceAsStream("/Splash.txt")) {....
jar只是一个zip文件,可以这样读取
ZipFile file = new ZipFile("/home/Desktop/myjar.jar");
Enumeration<? extends ZipEntry> entries = file.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
if (entry.getName().startsWith("splash")) {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream(entry)))) {
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
}
}
zipfilefile=newzipfile(“/home/Desktop/myjar.jar”);
枚举是否在Spash
中运行main
方法?否,main
方法位于名为main
的类中,现在我已将其存档