是否可以使用Java为存档内的文件获取文件或URI对象? (zip或jar档案)
谢谢Hemeroc。
是否可以使用Java为存档内的文件获取文件或URI对象? (zip或jar档案)
谢谢Hemeroc。
该 jar:
protocol是一种在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的)。该类的javadoc解释了如何使用它。