Ограничение DeflateStream 4 ГБ в .NET - PullRequest
6 голосов
/ 03 февраля 2009

Из MSDN: Класс DeflateStream

DeflateStream нельзя использовать для сжатия файлов размером более 4 ГБ.

Существуют ли другие реализации для .NET без ограничения 4 ГБ?

ПРИМЕЧАНИЕ. Мне действительно нужно распаковать файл в формате GZ с содержимым размером более 4 ГБ. Может ли какой-нибудь код сделать это?

Ответы [ 7 ]

8 голосов
/ 03 февраля 2009

К вашему сведению, мы удалили ограничение 4 ГБ из DeflateStream в .NET 4.

7 голосов
/ 03 февраля 2009

В CodeProject имеется образец кода с использованием библиотеки 7-Zip.

Лицензия открыта, поэтому вы можете использовать ее в своем проекте.

7-Zip также поддерживает файлы GZ.

2 голосов
/ 03 февраля 2009

Взгляните на SharpZipLib . Не уверен, что на него распространяются те же ограничения, но стоит посмотреть.

1 голос
/ 03 февраля 2009

Найдите библиотеки, которые поддерживают DEFLATE64 (не Zip64, это расширение формата файла ZIP). Xceed Zip для .NET поддерживает Deflate64, и я уверен, что другие тоже.

1 голос
/ 03 февраля 2009

Осмотревшись, кажется, что многие люди столкнулись с этой проблемой. System.IO.Compressio.DeflateStream разъяснения, пожалуйста, представляется наиболее полным.

Единственная реализация, которую мне удалось найти, которая, кажется, преодолевает эту проблему с помощью Zip64, это Xceed Zip для .NET .

Однако, это очень дорого, и я не уверен, что это подойдет вашим потребностям.

Edit:

Кажется, существует довольно много реализаций Zip64 для .NET, но я не могу найти ни одной из них бесплатной.

0 голосов
/ 02 июня 2009

Хотя в этой документации сказано, что ограничение в 4 ГБ относится как к DeflateStream, так и к GZipStream, только GZipStream ограничено из-за контрольной суммы CRC32. Если вам не нужен CRC32, используйте DeflateStream.

0 голосов
/ 05 марта 2009

DotNetZip делает ZIP64 для .NET, и это бесплатно. Но Zip64 - это не то же самое, что Deflate64.

...