将 7z 文件提取到目录 c# 时出现性能问题



我正在使用SharpCompress库来提取.7z文件,但提取60mb.7z文件大约需要35分钟。这是正常的还是我在性能方面做错了什么? .7z文件以高压缩模式和LZMA类型压缩。

 using (var archive2 = ArchiveFactory.Open(source))
 {
     foreach (var entry in archive2.Entries)
     {
         if (!entry.IsDirectory)
         {
             entry.WriteToDirectory(destination, ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
             }
         }
      }
  }

这是一个旧帖子,但我只是遇到了同样的问题。

这条线是问题所在

foreach (var entry in archive2.Entries)

此处描述了该问题(即。如果有 100 个文件,它会解压缩第一个文件 100 次,第二个文件 99 次,依此类推)

解决方案是使用阅读器(仅向前)。请参阅接口。
但是那里的示例代码不支持 7z。

对于 7z,您可以使用 archive.ExtractAllEntries() ,例如。

using (var archive = ArchiveFactory.Open(movedZipFile))
{
    var reader = archive.ExtractAllEntries();
    while (reader.MoveToNextEntry())
    {
        if (!reader.Entry.IsDirectory)
            reader.WriteEntryToDirectory(extractDir, new ExtractionOptions() { ExtractFullPath = false, Overwrite = true });
    }
}

它会快得多。

相关内容

  • 没有找到相关文章

最新更新