Search code examples
javafilejarexternal

Read a file from inside of an external Jar file?


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?


Solution

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