问题 使用Java获取存档内文件的文件或URI对象?


是否可以使用Java为存档内的文件获取文件或URI对象? (zip或jar档案)

谢谢Hemeroc。


11895
2018-01-12 14:34


起源



答案:


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。


12
2018-01-12 14:40





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对象:)


2
2018-01-12 14:59





有关实际的文件数据,请参阅 ZipFile的#的getInputStream(ZipEntry的)。该类的javadoc解释了如何使用它。


1
2018-01-12 14:41