我正在使用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 });
}
}
它会快得多。