从外部 Jar 文件内部读取文件?

问题描述 投票:0回答:3

我正在尝试使用 java 从外部 jar 中读取文件.. 例如,我有两个 jar 文件。一个是“foo.jar”,另一个是“bar.jar”。 “bar.jar”内部是文件“foo-bar.txt”。如何使用“foo.jar”中的代码从“bar.jar”内部读取文件“foo-bar.txt”...?这可能吗..? 我知道我可以使用

从 foo.jar 的一侧读取文件
this.getClass().getClassLoader().getResourceAsStream("foo-bar.txt");

但是我不知道如何从外部罐子中做到这一点..有人可以帮助我吗?

java file jar external
3个回答
7
投票

使用 jar url 打开连接示例代码

InputStream in = null;
String inputFile = "jar:file:/c:/path/to/my.jar!/myfile.txt";
if (inputFile.startsWith("jar:")){
  try {
    inputURL = new URL(inputFile);
    JarURLConnection conn = (JarURLConnection)inputURL.openConnection();
    in = conn.getInputStream();
  } catch (MalformedURLException e1) {
    System.err.println("Malformed input URL: "+inputURL);
    return;
  } catch (IOException e1) {
    System.err.println("IO error open connection");
    return;
  }
} 

5
投票

如果 jar 在您的类路径中,则

getResourceAsStream
将起作用,但请注意,它将在您的类路径中找到 first 实例。如果 foo.jar 和 bar.jar 都包含此文件,那么它将返回类路径中第一个 jar。

要从罐子中读取它,请使用

JarFile.getEntry
JarFile.getInputStream


0
投票

尝试我的库:https://sourceforge.net/projects/external-jar-reader/ 用法: int ThisIsExternalInt =ExternalJarReader.readInt("path/folder/name.jar", "path.class.name", "IntMethod");

© www.soinside.com 2019 - 2024. All rights reserved.