Pergunta

De msdn: Classe Deflatestream

Deflatestream não pode ser usado para compactar arquivos maiores que 4 GB.

Existem outras implementações para .NET sem o limite de 4 GB?

Nota: Eu realmente preciso descomprimir um arquivo no formato GZ com conteúdo maior que 4 GB. Algum código pode fazer isso?

Foi útil?

Solução

Dar uma olhada em Sharpziplib. Não tenho certeza se está sujeito à mesma limitação, mas vale a pena dar uma olhada.

Outras dicas

Para sua informação, removemos o limite de 4 GB do deflatestream no .NET 4.

Código de exemplo no CodeProject usando a biblioteca 7-ZIP.

A licença está aberta, para que você possa usar isso em seu projeto.

O 7-ZIP também suporta arquivos GZ.

Procure bibliotecas que suportem Deflate64 (não ZIP64, isso é uma extensão para o formato do arquivo zip). XECED ZIP para .NET Apoia o deflate64, e tenho certeza de que os outros também o fazem.

Dando uma olhada em volta, parece que muitas pessoas encontraram esse problema.System.io.compressio.deflatestream esclarecimentos, por favor parece ser o mais abrangente.

A única implementação que pude encontrar que parece superar esse problema usando o ZIP64 éXECED ZIP para .NET.

No entanto, é muito caro e não tenho certeza se isso seria aproveitado suas necessidades.

Editar:

Parece haver várias implementações do ZIP64 para .NET, mas não consigo encontrar nenhum que seja gratuito.

Dotnetzip Zip64 para .NET, e é gratuito. Mas o ZIP64 não é o mesmo que deflate64.

Embora essa documentação diga que a limitação de 4 GB é para a transmissão de deflatestream e GzipStream, apenas o GzipStream é limitado devido à soma de verificação do CRC32. Se você não precisar do CRC32, use o Deflatestream.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top