阅读从外部Jar文件中的文件?(Read a file from inside of an exte

2019-07-03 16:49发布

我试图使用Java编写的外部罐子。例如,我有两个jar文件中读取文件。 一个是“foo.jar中”另一个是“bar.jar”。 里面的“bar.jar”的是该文件为“foo-跳回到bar.txt”。 如何从“bar.jar”使用“foo.jar中”代码...里面读取该文件为“foo-跳回到bar.txt”? 这甚至可能..? 我知道我可以使用阅读foo.jar中的iside文件

this.getClass().getClassLoader().getResourceAsStream("foo-bar.txt");

但我不知道如何从外部罐子做吧..有人可以帮助我吗?

Answer 1:

使用的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;
  }
} 


Answer 2:

如果罐子在classpath那么getResourceAsStream会的工作,但要注意,它会发现在你的类路径中的第一个实例。 如果foo.jar中和bar.jar都包含这个文件,那么它会返回是首次在类路径为准罐子。

从罐子阅读使用JarFile.getEntryJarFile.getInputStream



文章来源: Read a file from inside of an external Jar file?