Criar GZip em C#

Os arquivos GZip (.gz) são usados para compactar um ou mais arquivos usando o algoritmo de compactação GNU zip. É comumente usado para compactação de arquivos em sistemas operacionais UNIX. Neste artigo, você aprenderá como compactar arquivos usando GZip (.gz) programaticamente em C#. Além disso, o artigo também abordará como descompactar arquivos GZip em C#.

API C# para compactar e descompactar arquivos usando GZip

Para compactar e descompactar arquivos usando GZip, usaremos Aspose.ZIP for .NET. É uma API poderosa que permite trabalhar com formatos de arquivo populares, incluindo ZIP, 7z, GZip, etc. Você pode baixar a API ou instalá-la usando NuGet.

PM> Install-Package Aspose.Zip

Compactar arquivos usando GZip em C#

A seguir estão as etapas para compactar arquivos usando GZip em C#.

O exemplo de código a seguir mostra como compactar arquivos para GZip em C#.

using (GzipArchive archive = new GzipArchive())
{
    // definir fonte
    archive.SetSource("data.bin");
    
    // criar arquivo
    archive.Save("archive.gz");
}

Descompacte um arquivo GZip em C#

A seguir estão as etapas para descompactar um arquivo GZip em C# usando Aspose.ZIP para .NET.

  • Crie um objeto da classe GzipArchive e inicialize-o com o caminho do arquivo GZip.
  • Crie um arquivo para o conteúdo extraído usando o método File.Create(String).
  • Abra o GZip para extração usando o método GZipArchive.Open().
  • Leia o conteúdo extraído e grave-o no arquivo.

O exemplo de código a seguir mostra como descompactar um arquivo GZip usando C#.

// carregar o arquivo GZip
using (var archive = new GzipArchive("archive.gz"))
{
    // crie um arquivo
    using (var extracted = File.Create("data.bin"))
    {
        // Arquivo aberto
        var unpacked = archive.Open();
        byte[] b = new byte[8192];
        int bytesRead;
        
        // gravar em arquivo
        while (0 < (bytesRead = unpacked.Read(b, 0, b.Length)))
            extracted.Write(b, 0, bytesRead);
    }
}

Extraia um arquivo GZip no fluxo em C#

Você também pode extrair um arquivo GZip em um objeto de fluxo de memória. A seguir estão as etapas para realizar esta operação.

O exemplo de código a seguir mostra como extrair um arquivo GZip em um fluxo de memória usando C#.

// criar um fluxo de memória
var ms = new MemoryStream();

// carregar arquivo GZip
using (GzipArchive archive = new GzipArchive(File.OpenRead("sample.gz")))
{
    // extrair e copiar para o fluxo de memória
    archive.Open().CopyTo(ms);
    Console.WriteLine(archive.Name);
}

Obtenha uma licença de API gratuita

Você pode obter uma licença temporária gratuita para usar a API sem limitações de avaliação.

Conclusão

Neste artigo, você aprendeu como compactar ou descompactar arquivos usando GZip em C#. Além disso, você viu como extrair um GZip para transmitir programaticamente. Você pode explorar mais sobre o Aspose.ZIP para .NET usando documentação. Além disso, você pode entrar em contato conosco para compartilhar suas dúvidas através do nosso fórum.

Veja também