为了用要提取的文件数更新进度条。我的程序正在检查一个 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 文件:
- 2 秒打开 7-Zip 存档。
- 1秒获取文件属性
- 在属性中,我可以看到 10016 个文件 + 882 个文件夹 - 这意味着需要 7-Zip ~3 秒才能知道 Zip 文件中有 10898 个条目。
任何快速计算文件数量的想法、建议或任何替代方法将不胜感激。
- 使用DotNetZip 计数实际上要快得多,但由于一些内部官僚问题,我无法使用它。我需要一个不涉及第三方库的解决方案,我仍然可以使用 Microsoft 标准库。