0

我正在使用 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);
             }
         }
      }
  }
4

1 回答 1

1

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

这条线是问题

foreach (var entry in archive2.Entries)

问题描述here(即如果有100个文件,它将第一个文件解压缩100次,第2个文件解压缩99次,依此类推)

解决方案是使用阅读器(仅转发)。请参阅API
但是那里的示例代码不支持 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 });
    }
}

它会快得多。

于 2017-06-06T00:16:12.117 回答