Как распаковать сжатые файлы с помощью C #? - PullRequest
2 голосов
/ 13 июля 2011

Как я могу использовать C # для распаковки файлов?Я обнаружил, что мне нужно использовать сторонние библиотеки.Есть ли прямой метод?

Ответы [ 6 ]

3 голосов
/ 13 июля 2011

Пространство имен System.IO.Packaging содержит некоторые классы сжатия, такие как ZipPackage , но они не так просты, как использование сторонних библиотек. Я настоятельно рекомендую вам рассмотреть стороннюю библиотеку.

2 голосов
/ 13 июля 2011

Вы можете использовать инструмент фреймворка для архивирования, а затем для распаковки

sinxe .NET 1.x у вас есть много библиотек компоновок в сети, некоторые бесплатные, некоторые коммерческие.Отличной бесплатной библиотекой является #Zip, или создатель бесплатной C # IDE, #velop.

.NET Framework 2.0 представил классы GZipStream и DeflateStream для сжатия и распаковки потоков.Вот ссылки на MSDN:

http://msdn2.microsoft.com/en-us/library/system.io.compression.gzipstream(VS.80).aspx

http://msdn2.microsoft.com/en-US/library/system.io.compression.deflatestream(VS.80).aspx

1 голос
/ 13 июля 2011

Мне повезло с бесплатным Iconic Zip от Codeplex. Он очень быстро застегивается и расстегивается, работает хорошо и имеет небольшие размеры. Это также работает с Mono.

1 голос
/ 13 июля 2011
0 голосов
/ 20 марта 2013

.NET 4.5 имеет более полезный класс ZipPackage

http://msdn.microsoft.com/en-us/library/system.io.packaging.zippackage.aspx

Его по-прежнему не так просто использовать, пример кода в документации класса довольно длинный.

0 голосов
/ 13 июля 2011

Для zip файлов, DotNetZip прекрасно работает.Для поддержки zip-файлов требуется только одна сборка.

Для gzip файлов вы можете использовать потоки в пространстве имен System.IO.Compression или DotNetZip .Обратите внимание, что если у вас есть файлы *.tar.gz или *.tgz, вам понадобится что-то, что говорит tar (1) или tar (5) .

Для zlib сжатые данные, DotNetZip снова ваш друг. zlib использует алгоритм Deflate.Я не уверен, что zlib 6 и System.IO.Compression.DeflateStream совместимы.

Существуют другие библиотеки, которые поддерживают эти форматы сжатия, номногие из них, я считаю, являются обертками вокруг неуправляемого кода.Хорошо это или плохо, зависит от ваших требований.

DotNetZip - это чистый управляемый код.Мои тесты показывают, что он работает примерно на той же скорости, что и реализации zip / unzip с открытым исходным кодом *1041* Info-Zip.Полученные сжатые файлы не являются байтовыми, но они совместимы и имеют приблизительно одинаковые коэффициенты сжатия.


Отредактировано в примечание: DotNetZip используется для жизни в Codeplex.Кодекс был закрыт.Старый архив по-прежнему доступен в Codeplex .Похоже, что код перенесен на Github:


...