繁体   English   中英

提取.zip存档的最快方法

[英]fastest way to extract .zip archive

哪种方法是提取.zip存档的最快方法? 我的应用程序的性能高度取决于.zip文件的提取速度。 我正在使用dotNetzip atm,但似乎可能会有更快的工具。 如果有,他们安全吗? 我听说QuickLZ是最快的,但尚未对其进行测试,也未找到任何代码示例或如何在c#中使用它。 任何帮助将不胜感激。

如果可以将项目升级到.NET 4.5,则可以使用ZipArchive类。 我写了一篇有关使用它的文章 ,这简直太简单了。 还有ZipFile我也写过 ,甚至更简单。 但是,我无法对性能进行评论,因为我尚未使用第三方库来存储ZIP存档。

使用DotNetZip库,您可以仅使用ExtractAll()方法提取所有文件:)

做我们自己的测试,到目前为止,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();
    }

您的zip文件有多大? 也许您可以利用现代多核处理器的优势,方法是将原始文件分成多个部分,分别压缩每个部分,然后使用多线程将其解压缩到您的应用程序中。 与解压缩时间相比,重新组合内存中文件的时间将很小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM