2010-05-12 2 views
3
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? 

ответ

5

Не похоже, что есть способ перечислить 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

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

Смежные вопросы