Read a file from inside of an external Jar file?

烈酒焚心 提交于 2020-01-21 05:53:05

问题


I'm trying to read a file from inside an external jar using java.. For example, I have two jar files. One is "foo.jar" the other is "bar.jar". Inside of "bar.jar" is the file "foo-bar.txt". How do i read the file "foo-bar.txt" from inside of "bar.jar" using code in "foo.jar"...? Is this even possible..? I know that i can read a file from iside of foo.jar using

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

But I don't know how to do it from an external jar.. can someone help me?


回答1:


Use jar url to open connection the example code

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;
  }
} 



回答2:


If the jar is in your classpath then getResourceAsStream will work, but note that it will find the first instance in your classpath. If foo.jar and bar.jar both contain this file then it will return whichever jar is first in classpath.

To read it from the jar use JarFile.getEntry and JarFile.getInputStream



来源:https://stackoverflow.com/questions/13294594/read-a-file-from-inside-of-an-external-jar-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!