Как мне перечислить содержимое заархивированной папки в Java? - PullRequest
3 голосов
/ 12 мая 2010
ZipeFile file = new ZipFile(filename);
ZipEntry folder = this.file.getEntry("some/path/in/zip/");
if (folder == null || !folder.isDirectory())
  throw new Exception();

// now, how do I enumerate the contents of the zipped folder?

Ответы [ 3 ]

5 голосов
/ 12 мая 2010

Не похоже, что есть способ перечислить ZipEntry в определенном каталоге.

Вам нужно будет пройти через все ZipFile.entries() и отфильтровать те, которые вы хотите, основываясь на ZipEntry.getName() и посмотреть, если это String.startsWith(String prefix).

String specificPath = "some/path/in/zip/";

ZipFile zipFile = new ZipFile(file);
Enumeration<? extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) {
    ZipEntry ze = entries.nextElement();
    if (ze.getName().startsWith(specificPath)) {
        System.out.println(ze);
    }
}
1 голос
/ 12 мая 2010

Вы не - по крайней мере, не напрямую. ZIP-файлы на самом деле не являются иерархическими. Перечислите все записи (с помощью ZipFile.entries () или ZipInputStream.getNextEntry ()) и определите, какие из них находятся в нужной папке, изучив имя.

0 голосов
/ 12 мая 2010

Можете ли вы просто использовать entries()? API-ссылка

...