Получить объект File или URI для файла внутри архива с помощью Java?

можно ли получить файл или объект URI для файла внутри архива с Java? (архив zip или jar)

Спасибо Хемерок.


person Hemeroc    schedule 12.01.2010    source источник


Ответы (3)


Протокол jar: — это способ создания URI для ресурса в архиве JAR:

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

См. документацию по API для JarURLConnection: http://java.sun.com/javase/6/docs/api/java/net/JarURLConnection.html

Между jar: и !/ может быть любой URL, включая file: URL.

person ZoogieZork    schedule 12.01.2010

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

person Fortega    schedule 12.01.2010

Фактические данные файла см. в разделе ZipFile#getInputStream(ZipEntry). Javadocs для этого класса объясняет, как его использовать.

person Kevin    schedule 12.01.2010