Mesclar vários arquivos ZIP ou TAR em C#

Ao trabalhar com arquivos de seus aplicativos .NET, você pode precisar mesclar vários arquivos ZIP ou TAR. Por exemplo, você pode querer extrair arquivos e pastas de vários arquivos e colocá-los em um único arquivo. Para conseguir isso, este artigo aborda como mesclar vários arquivos ZIP ou TAR em C#. Abordaremos a fusão de ZIP em ZIP, TAR em TAR, ZIP em TAR e TAR em ZIP.

API C# .NET para mesclar arquivos ZIP e TAR

Para mesclar vários arquivos ZIP e TAR, usaremos o Aspose.ZIP para .NET. É uma API .NET rica em recursos que permite criar e manipular vários formatos de arquivo populares. Você pode baixar a DLL da API ou instalá-la diretamente usando NuGet.

PM> Install-Package Aspose.Zip

Mesclar vários arquivos ZIP em C#

Vamos começar nossa jornada de mesclagem de arquivos com o formato ZIP. Pegaremos dois arquivos ZIP e coletaremos suas entradas em um único arquivo ZIP. A seguir estão as etapas para mesclar vários arquivos ZIP em C#.

O exemplo de código a seguir mostra como mesclar dois arquivos ZIP em C#.

// Carregar o arquivo ZIP de origem
using (Archive sourceArchive = new Archive("Archives/SourceArchive.zip"))
{
    // Carregar arquivo ZIP de destino
    using (Archive destArchive = new Archive("Archives/DestinationArchive.zip"))
    {
        // Iterar sobre as entradas
        foreach (ArchiveEntry entry in sourceArchive.Entries)
        {
            // Verifique se a entrada não é um diretório. As entradas que são diretórios são ignoradas, mas seus arquivos são adicionados respeitando os caminhos relativos.
            if (!entry.IsDirectory)
            {
                // Carregar entrada no fluxo de memória
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Adicionar entrada ao CEP de destino
                destArchive.CreateEntry(entry.Name, mem);
            } 
        }

        // Salvar o arquivo mesclado separadamente
        destArchive.Save("Archives/merged-archive.zip");
    }
}

Mesclar vários arquivos TAR em C#

Vamos agora verificar como mesclar vários arquivos TAR em C#. A seguir estão os passos para conseguir isso.

O exemplo de código a seguir mostra como mesclar vários arquivos TAR em C#.

// Carregar o arquivo TAR de origem
using (TarArchive sourceArchive = new TarArchive("Archives/SourceArchive.tar"))
{
    // Carregar arquivo TAR de destino
    using (TarArchive destArchive = new TarArchive("Archives/DestinationArchive.tar"))
    {
        // Iterar sobre as entradas
        foreach (TarEntry entry in sourceArchive.Entries)
        {
            // Verifique se a entrada não é um diretório. As entradas que são diretórios são ignoradas, mas seus arquivos são adicionados respeitando os caminhos relativos.
            if (!entry.IsDirectory)
            {
                // Carregar entrada no fluxo de memória
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Adicionar entrada ao TAR de destino
                destArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Salvar o arquivo mesclado separadamente
        destArchive.Save("Archives/merged-archive.tar");
    }
}

Mesclar ZIP em TAR em C#

Nesta seção, veremos como mesclar um arquivo ZIP em um arquivo TAR em C#. A seguir estão as etapas para realizar esta operação.

O exemplo de código a seguir mostra como mesclar um arquivo ZIP no TAR.

// Carregar o arquivo ZIP de origem
using (Archive zipArchive = new Archive("Archives/SourceArchive.zip"))
{
    // Carregar arquivo TAR de destino
    using (TarArchive tarArchive = new TarArchive("Archives/DestinationArchive.tar"))
    {
        // Iterar sobre as entradas
        foreach (ArchiveEntry entry in zipArchive.Entries)
        {
            // Verifique se a entrada não é um diretório. As entradas que são diretórios são ignoradas, mas seus arquivos são adicionados respeitando os caminhos relativos.
            if (!entry.IsDirectory)
            {
                // Carregar entrada no fluxo de memória
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Adicionar entrada ao TAR de destino
                tarArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Salvar o arquivo mesclado separadamente
        tarArchive.Save("Archives/merged-archive.tar");
    }
}

Combine TAR com ZIP em C#

Semelhante ao exemplo anterior, você pode mesclar um arquivo TAR em ZIP. O exemplo de código a seguir mostra como extrair arquivos de um TAR e mesclá-los em um ZIP.

// Carregar arquivo TAR
using (TarArchive tarArchive = new TarArchive("Archives/SourceArchive.tar"))
{
    // Carregar arquivo ZIP
    using (Archive zipArchive = new Archive("Archives/DestinationArchive.zip"))
    {
        // Iterar sobre as entradas
        foreach (TarEntry entry in tarArchive.Entries)
        {
            // Verifique se a entrada não é um diretório. As entradas que são diretórios são ignoradas, mas seus arquivos são adicionados respeitando os caminhos relativos.
            if (!entry.IsDirectory)
            {
                // Carregar entrada no fluxo de memória
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Adicionar entrada ao ZIP
                zipArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Salvar o arquivo mesclado separadamente
        zipArchive.Save("Archives/merged-archive.zip");
    }
}

Obtenha uma licença de API gratuita

Você pode usar o Aspose.ZIP para .NET sem limitações de avaliação obtendo uma licença temporária gratuita.

Conclusão

Neste artigo, você aprendeu como mesclar vários arquivos ZIP ou TAR programaticamente em C#. Particularmente, abordamos como mesclar arquivos ZIP, arquivos TAR, ZIP em TAR e TAR em ZIP dinamicamente. Para explorar mais sobre o Aspose.ZIP para .NET, você pode visitar a documentação. Além disso, você pode postar suas dúvidas em nosso fórum.

Veja também