哪种提取.zip档案的最快方法?我的应用程序的性能很大程度上取决于提取的.zip文件的速度。我正在使用dotNetzip atm,但似乎可以有更快的工具。如果有,他们安全吗?我听说QuickLZ是最快的,但还没有测试过,还没有找到任何代码示例或如何在c#中使用它。任何帮助都会受到极大关注。
答案 0 :(得分:1)
如果将项目升级到.NET 4.5是一个选项,那么您可以使用ZipArchive
类。 I wrote an article使用它,这很简单。还有ZipFile
,I also wrote about,甚至更容易。但是我无法评论性能,因为我没有使用第三方库来存档ZIP文件。
答案 1 :(得分:0)
使用DotNetZip库,只需使用ExtractAll()方法即可提取所有文件:)
答案 2 :(得分:0)
做我们自己的测试,到目前为止,7-zip CLI(exe文件)是最快的。 CLI应用程序的性能胜过所有这些.NET dll,这听起来很疯狂,但不幸的是,事实就是如此。
准确地说,我已经使用ZipFile和ZipArchive测试了SharpCompress,SharpZipLib,DotNetZip和.NET自己的实现。对于我们的测试文件,所有这些文件的运行时间都在10到20秒左右,但是7-zip的exe进程通常在7到8秒钟时完成。
如果您决定使用7-zip,这是示例代码:
private static void ExtractWith7Zip(string archivePath, string extractPath)
{
var info = new ProcessStartInfo
{
FileName = @"C:\Program Files\7-Zip\7z.exe",
Arguments = $"x -y -o\"{extractPath}\" \"{archivePath}\"",
WindowStyle = ProcessWindowStyle.Hidden,
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true
};
Process.Start(info)?.WaitForExit();
}
答案 3 :(得分:-1)
您的zip文件有多大?也许您可以利用现代多核处理器,将原始文件拆分为多个部分,独立压缩每个部分,然后使用多线程在应用程序中解压缩它们。与解压缩时间相比,重新组合内存中文件的时间会很短。