Erhalten Sie ein Datei- oder URI-Objekt für eine Datei in einem Archiv mit Java?

Ist es möglich, ein Datei– oder URI-Objekt für eine Datei innerhalb eines Archivs mit Java zu erhalten? (zip- oder jar-Archiv)

Danke Hemeroc.

Das Protokoll jar: ist eine Möglichkeit, einen URI für eine Ressource in einem JAR-Archiv zu erstellen:

 jar:http://www.example.com/bar/baz.jar!/path/to/file 

Siehe die API-Dokumentation für JarURLConnection: http://java.sun.com/javase/6/docs/api/java/net/JarURLConnection.html

Zwischen dem jar: und !/ Kann eine beliebige URL sein, einschließlich einer file: URL.

 public List getFilesInJar(String jarName){ List result = new ArrayList(); File jarFile = new File(jarName); JarInputStream jarFile = new JarInputStream(new FileInputStream(jarFile)); JarEntry jarEntry; while ((jarEntry = jarFile.getNextJarEntry()) != null) { result.add(inputStreamToFile(jarFile.getInputStream(jarEntry))); } return result; } 

Für die Methode inputStreamToFile google “java inputStream to file”, obwohl Sie auch mit einem InputStream-Objekt zufrieden sein könnten, anstatt mit einem File-Objekt 🙂

Die eigentlichen Dateidaten finden Sie unter ZipFile # getInputStream (ZipEntry) . Die Javadocs für diese class erklären, wie es verwendet werden soll.