Muitas vezes nos deparamos com o cenário em que vários arquivos ZIP são encapsulados dentro de outro ZIP. Nesses casos, primeiro você deve extrair o ZIP pai e depois os arquivos aninhados um por um. Para facilitar as coisas para você, neste artigo, demonstraremos como extrair os arquivos ZIP aninhados em C# .NET sem escrever código complexo.

API C# .NET para extrair arquivos ZIP aninhados

Para descompactar os arquivos ZIP aninhados, utilizaremos Aspose.ZIP for .NET. A API foi projetada para realizar operações de arquivamento de dentro dos aplicativos .NET. Ele permite que você crie e manipule formatos de arquivo populares sem problemas. Você pode baixar a DLL da API ou instalá-la usando NuGet.

PM> Install-Package Aspose.Zip

Extrair arquivos ZIP aninhados em C#

Para demonstrar a extração de arquivos ZIP aninhados, criamos o seguinte arquivo ZIP que contém 3 entradas.

Arquivos ZIP aninhados

Arquivos ZIP aninhados

Vamos extrair cada arquivo ZIP aninhado e salvar seu conteúdo em uma pasta separada. A seguir estão as etapas para extrair arquivos ZIP aninhados em C#.

O exemplo de código a seguir mostra como descompactar arquivos ZIP aninhados em C# .NET.

// Abrir arquivo ZIP em um fluxo de arquivos
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
    // Carregar arquivo ZIP usando a classe Archive
    using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
    {
        // Acesse cada entrada no arquivo ZIP
        foreach(ArchiveEntry entry in archive.Entries)
        {
            if(entry.Name.ToLower().Contains(".zip"))
            {
                // Criar fluxo de memória para arquivo aninhado
                MemoryStream nestedArchiveStream = new MemoryStream();

                // Copiar arquivo para fluxo de memória
                entry.Open().CopyTo(nestedArchiveStream);

                // Carregar o arquivo aninhado do fluxo de memória
                using (var nestedArchive = new Archive(nestedArchiveStream))
                {
                    // Extraia o arquivo para o disco.
                    nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
                }                               

            }

        } 
    }
}

A seguir está a captura de tela dos arquivos ZIP extraídos.

Extraindo arquivos ZIP aninhados em C# .NET

Arquivos aninhados descompactados

Obtenha uma licença de API gratuita

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

Conclusão

Neste artigo, você aprendeu como extrair arquivos ZIP aninhados em C#. O guia passo a passo e o exemplo de código demonstraram como descompactar cada arquivo aninhado em uma pasta separada. Além disso, você pode visitar documentação para explorar outros recursos do Aspose.ZIP para .NET. Além disso, você pode fazer suas perguntas através do nosso fórum.

Veja também