самый быстрый способ извлечь .zip архив - PullRequest
4 голосов
/ 13 апреля 2011

Какой самый быстрый способ извлечения архивов .zip?Производительность моего приложения во многом зависит от того, насколько быстро извлекаются ZIP-файлы.Я использую dotNetzip atm, но кажется, что могут быть более быстрые инструменты.Если есть, они безопасны?Я слышал, что QuickLZ - самый быстрый, но я не тестировал его, а также не нашел примеров кода или того, как использовать его в c #Любая помощь будет очень ценна.

Ответы [ 4 ]

1 голос
/ 22 января 2013

Если вы хотите обновить проект до .NET 4.5, вы можете использовать класс ZipArchive. Я написал статью об ее использовании, и она очень проста.Есть также ZipFile, о котором Я также писал о , и это даже проще.Однако я не могу комментировать производительность, потому что я не использовал сторонние библиотеки для ZIP-архивов.

0 голосов
/ 28 ноября 2018

В наших собственных тестах 7-zip CLI (exe-файл) был самым быстрым на сегодняшний день.Звучит безумно, что приложение CLI превзошло бы все эти библиотеки .NET, но, к сожалению, это факт.

Если быть точным, я протестировал SharpCompress, SharpZipLib, DotNetZip, собственную реализацию .NET с использованием ZipFile и ZipArchive.Все они работали около 10-20 секунд для нашего тестового файла, но exe-процесс 7-zip обычно заканчивался через 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();
    }
0 голосов
/ 22 января 2013

используйте библиотеку DotNetZip, вы можете извлечь весь файл, просто используя метод ExtractAll ():)

0 голосов
/ 16 апреля 2011

Насколько велики ваши почтовые файлы? Возможно, вы можете воспользоваться современными многоядерными процессорами, разделив исходный файл на части, сжав каждую часть по отдельности, а затем разархивировав их в своем приложении с помощью многопоточности. Время рекомбинации файлов в памяти будет крошечным по сравнению со временем распаковки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...