System.IO.Compression-使用ZipFileArchive计数文件数非常慢

问题描述 投票:1回答:1

为了用要提取的文件数更新进度条。我的程序正在浏览Zip文件列表,并收集其中的文件数量。合并的数量约为22000个文件。

我正在使用的代码:

    foreach (string filepath in zipFiles)
    {
        ZipArchive zip = ZipFile.OpenRead(filepath);
        archives.Add(zip);
        filesCounter += zip.Entries.Count;
    }

但是zip.Entries.Count似乎正在进行某种遍历,并且完成此计数需要花费很多时间(如果互联网连接状况不佳,则需要几分钟,甚至更多,如果有,则是这样。)>

要想有多少可以改善的概念,我将以上内容与7-Zip的性能进行了比较。我带了一个包含〜11000个文件和文件夹的zip文件:

  1. 2秒打开7-Zip存档。
  2. [1秒
  3. 以获得文件属性
  4. 在属性中,我可以看到10016个文件+ 882文件夹-这意味着需要7压缩〜3秒才能知道Zip文件中有10898个条目。
  5. 7-Zip Properties

将快速计算出文件数量的任何想法,建议或任何其他方法,将受到赞赏。

  • 使用DotNetZip to count实际上要快得多,但是由于某些内部官僚问题,我无法使用它。我需要一个不涉及第三方库的解决方案,我仍然可以使用Microsoft标准库。

为了用要提取的文件数更新进度条。我的程序正在浏览Zip文件列表,并收集其中的文件数量。总数约为22000 ...

c# zip unzip system.io.compression
1个回答
0
投票

我的进度条问题已通过采用新方法解决。

© www.soinside.com 2019 - 2024. All rights reserved.