【发布时间】:2023-03-03 13:04:01
【问题描述】:
是否可以使用 Java 为存档中的文件获取文件或 URI 对象? (zip 或 jar 存档)
感谢 Hemeroc。
【问题讨论】:
是否可以使用 Java 为存档中的文件获取文件或 URI 对象? (zip 或 jar 存档)
感谢 Hemeroc。
【问题讨论】:
jar: 协议是一种为 JAR 存档中的资源构建 URI 的方法:
jar:http://www.example.com/bar/baz.jar!/path/to/file
请参阅 JarURLConnection 的 API 文档:http://java.sun.com/javase/6/docs/api/java/net/JarURLConnection.html
jar: 和 !/ 之间可以是任何 URL,包括 file: URL。
【讨论】:
public List<File> getFilesInJar(String jarName){
List<File> result = new ArrayList<File>();
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;
}
对于 inputStreamToFile 方法,谷歌“java inputStream to file”,虽然您可能也对 InputStream 对象而不是 File 对象感到满意 :)
【讨论】:
实际文件数据见ZipFile#getInputStream(ZipEntry)。该类的 javadocs 解释了如何使用它。
【讨论】: