如何计算 zip 文件中的特定文件

Posted

技术标签:

【中文标题】如何计算 zip 文件中的特定文件【英文标题】:How to count specific file in a zip file 【发布时间】:2017-04-09 13:36:17 【问题描述】:

我有一个包含许多 zip 条目的 zip 文件 (许多 png 图像)。

我要统计包含单词"idle"的图片数量

zip 条目是这样的:

on001,on002...on0037-idle001,idle002...idle0085

请告诉我如何计算名称中包含单词"idle"的文件数

我知道如何计算.size() 压缩包中的所有文件,但我如何计算特定文件?

【问题讨论】:

【参考方案1】:

遍历.entries() 并检查每个ZipEntrys 名称:

ZipFile zipFile = new ZipFile("???.zip");

int count = 0;

Enumeration<? extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) 
    ZipEntry entry = entries.nextElement();
    if (entry.getName().contains("idle")) count++;

【讨论】:

不错,但我得到错误 foreach 不适用于类型 'java.util.enumeration 顺便说一句,我找到了另一种方法,但它太慢太迟钝了..你能说出原因吗? 如果我猜的话,我会说这种方法可能只是在 zip 文件的开头使用目录,而您的方法实际上是在寻找每个 zip 文件的开头条目,如果你真的打开它们,这没关系,但如果你不是,则需要更多的工作。【参考方案2】:

我通过这段代码解决了这个问题,但是它太慢了,韦斯顿的代码要好得多

            FileInputStream fis = new FileInputStream("zip file adress");
            ZipInputStream zis = new ZipInputStream(fis);
            ZipEntry ze = null;


            int idlecount;
            while ((ze = zis.getNextEntry()) != null)
                if (ze.getName().contains("idle"))
                    idlecount++;
                

            

【讨论】:

以上是关于如何计算 zip 文件中的特定文件的主要内容,如果未能解决你的问题,请参考以下文章

linux如何删除zip包中某个文件夹及里面的内容

使用 AntBuilder 压缩特定文件

使用 php 获取 tar.gz 文件中的文件总数

如何更新 zip 存档中的一个文件

如何在不使用临时文件的情况下从 Java 中的嵌套 zip 文件中读取数据?

使用 7zip 创建 Zip 时如何计算 MD5 哈希