Accessing files in Jars

Just as a small note, as I was only hardly finding help on this anywhere: If you are trying to access files in a folder, which is bundled inside a Jar file and you try to access them as anyone would: by instantiating a File for the directory – via getResource("directory/") – and then getting all the files: it doesn’t work, you can’t access a folder in a Jar, you will have to iterate over all the JarEntries, and check for each if it is in the directory (or check its name), like this:

JarFile jarFile = new JarFile("some.jar");
Enumeration<JarEntry> entries = jarFile.entries();
while (entries.hasMoreElements()) { 
  JarEntry e = entries.nextElement();
  if (e.getName().endsWith("lst")) {   
    InputStream inputStream = jarFile.getInputStream(e);   
    Scanner s = new Scanner(inputStream);   
    while (s.hasNextLine()) {     
      String nextLine = s.nextLine();     //...   
    } 
  }
}

On the other hand, if you need to access only a single file, the way to go is using the getResourceAsStream() method in Class and reading the stream.


About this entry