我需要一个文件filename.txt
这是一个jar文件。我如何使用代码读取txt文件的内容?是否有可用于处理* .jar文件的库?如何从jar中获取文件?
回答
public class Test {
public static void main(String[] args) {
InputStream stream = Test.class.getResourceAsStream("/test.txt");
Scanner s = new Scanner(stream);
while (s.hasNext()) {
System.out.println(s.next());
}
}
}
该jar需要位于应用程序的类路径中。
此代码将搜索所有jar的根目录下的test.txt文件。
如果您需要指定一个不在类路径中的jar,那么其他建议可能更有价值。
如果jar不在类路径中,则可以创建自定义类加载器,并从中加载资源。 – MeBigFatGuy
是否有用于处理* .jar文件的库?
是的,有java.util.zip
(jar文件是有效的ZIP文件,more here),在JDK本身(无需第三方LIB)。
另请参阅Oracle网站上的this article,其中提供了示例等。下面是他们的第一个例子的代码,从归档(不是我的代码,当然最喜欢的例子有误差不足检查等)解压缩所有文件:
import java.io.*;
import java.util.zip.*;
public class UnZip {
final int BUFFER = 2048;
public static void main (String argv[]) {
try {
BufferedOutputStream dest = null;
FileInputStream fis = new FileInputStream(argv[0]);
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
ZipEntry entry;
while((entry = zis.getNextEntry()) != null) {
System.out.println("Extracting: " +entry);
int count;
byte data[] = new byte[BUFFER];
// write the files to the disk
FileOutputStream fos = new FileOutputStream(entry.getName());
dest = new BufferedOutputStream(fos, BUFFER);
while ((count = zis.read(data, 0, BUFFER)) != -1) {
dest.write(data, 0, count);
}
dest.flush();
dest.close();
}
zis.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
如果罐子在classpath ,您可以使用getClass().getClassLoader().getResourceAsStream(...)
访问文件。如果jar文件不在类路径中,则检查出java.util.jar.JarFile
。
你不需要一个单独的库。默认的压缩包可以很好地工作。
private String getFile(File jar, String requestedFile) throws IOException{
ByteArrayOutputStream out = new ByteArrayOutputStream(); //change ouptut stream as required
ZipInputStream in = null;
try {
in = new ZipInputStream(new FileInputStream(jar));
ZipEntry entry;
while((entry = in.getNextEntry())!=null){
if (entry.getName().equals(requestedFile)){
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
}
}
} finally {
if (in!=null){
in.close();
}
out.close();
}
return new String(out.toByteArray());
}
首先检查其中yyy.jar
是你xxx.txt
位于
jar tf yyy.jar
样本输出
META-INF/MANIFEST.MF
images/pic.gif
files/abc.txt
files/xxx.txt
现在你知道xxx.txt路径,
提取物它由
jar xf yyy.jar files/xxx.txt
下面的命令应该工作:
jar xf yyy.jar files/xxx.txt
确保使用正确的JDK的罐子包装回用
jar uf yyy.jar files/xxx.txt
- 1. 从JAR中获取文件
- 2. 如何从classpath获取jar文件?
- 3. 如何从JAR文件获取资源
- 4. 如何从jar文件中获取Manifest.mf文件内容
- 5. 如何从JAR中提取文件夹
- 6. 如何从.jar文件中提取类?
- 7. 如何从.jnlp文件获取.jar文件?
- 8. 您可以从C++ Lib文件中获取信息,例如如何从Jar文件中获取信息?
- 9. 如何_directly_从.JAR子目录中获取文件列表 - JAVA
- 10. 如何从jar文件中获取mp3的类路径
- 11. 如何从jar文件中获取函数sinatures?
- 12. 如何从jar中获取资源(文件夹)?
- 13. 如何从jar中的文件获取URL
- 14. 从.jar文件获取图像
- 15. 使用.getResource()从.jar获取文件
- 16. 如何获取jar文件中的文件夹路径?
- 17. 如何获取JAR文件中目录下的文件列表
- 18. 如何从Java JAR文件中获取资源/文件的路径
- 19. 从我的jar文件中获取资源文件夹内容?
- 20. 如何在插件jar中获取plugin.yml?
- 21. 如何从.jar文件中提取.class文件?
- 22. 如何从jar文件中提取zip文件
- 23. 如何从jar文件获取方法签名?
- 24. 如何使用Jenkins从nexus获取jar文件?
- 25. Jar从jar文件中提取的文件夹
- 26. 从Spring JAR读取文件
- 27. 获取嵌套.jar中的.class文件
- 28. 如何从spring xd模块jar中读取文本文件
- 29. 从.exe获取.jar
- 30. 如何从github项目获取jar?
你想要得到它编程,还是只是提取它?如果前者,是类路径中的yyy.jar还是不? –