将7z文件解压缩到目录c#时的性能问题

时间:2017-01-13 12:51:03

标签: c# performance 7zip sevenzipsharp sharpcompress

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

<div class="col-xs-12 col-sm-6 col-md-6 col-lg-4 grey mb-30">
<div class="thumbnail">
    <div class="img-center">
        <img src="img/picto/originals/png/Heart/Newable_Pictogram_CoolGrey_HEART.png" class="img-responsive picto_padding" alt="...">
    </div>
</div>
<div class="caption">
       <h3>Responsibe finance</h3>
       <p>We’re the responsible alternative for those who find High     Street bank finance difficult to obtain. </p>
</div>
</div>

1 个答案:

答案 0 :(得分:1)

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

这一行是问题

foreach (var entry in archive2.Entries)

问题描述here(即如果有100个文件,它会解压缩第一个文件100次,第二个文件解压缩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 });
    }
}

会快得多。