如何在Java中枚举压缩文件夹的内容?

时间:2010-05-12 13:55:15

标签: java zip

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 个答案:

答案 0 :(得分: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 :(得分:1)

你不 - 至少不是直接的。 ZIP文件实际上不是分层的。枚举所有条目(通过ZipFile.entries()或ZipInputStream.getNextEntry())并通过检查名称确定所需的文件夹。

答案 2 :(得分:0)

你能使用entries()吗? API link