Ao trabalhar com arquivos ZIP, você pode encontrar um cenário onde um arquivo ZIP contém outros arquivos ZIP, criando uma estrutura aninhada. Se você deseja simplificar isso extraindo todos os arquivos ZIP internos para o arquivo externo, você está no lugar certo. Neste artigo, exploraremos como criar um arquivo ZIP plano em C# usando o poderoso Aspose.ZIP para .NET.
Índice
- Visão Geral da API .NET para Criar Arquivos ZIP Planos
- Etapas para Criar um Arquivo ZIP Plano
- Obter uma Licença de API Gratuita
- Conclusão
- Veja Também
Visão Geral da API .NET para Criar Arquivos ZIP Planos
Para criar arquivos ZIP planos, utilizaremos a biblioteca Aspose.ZIP para .NET. Esta robusta API de arquivamento permite que você crie e extraia vários formatos de arquivo, incluindo ZIP, TAR, GZip e 7z. Você pode facilmente instalar esta biblioteca a partir do NuGet ou baixar seu DLL na seção de downloads.
PM> Install-Package Aspose.Zip
Etapas para Criar um Arquivo ZIP Plano em C#
Para entender melhor a estrutura de um arquivo ZIP plano, considere o seguinte exemplo. Inicialmente, temos um arquivo ZIP contendo outro arquivo ZIP:
parent.zip
├ first.txt
├ inner.zip
│ ├ game.exe
│ └ subitem.bin
└ picture.gif
Após transformar este arquivo ZIP em uma estrutura plana, todas as entradas do ZIP interno serão extraídas para o ZIP pai, resultando na seguinte estrutura:
flatten.zip
├ first.txt
├ picture.gif
├ game.exe
└ subitem.bin
Etapas de Implementação
Aqui está como criar programaticamente um arquivo ZIP plano em C#:
- Carregar o Arquivo ZIP Pai: Use a classe Archive para carregar o ZIP pai.
- Inicializar Listas: Crie listas para armazenar:
- Entradas a serem removidas do ZIP pai
- Entradas extraídas e seus nomes
- Iterar Através das Entradas do Arquivo: Percorra cada ArchiveEntry no ZIP pai usando a coleção Archive.Entries.
- Processar Cada Entrada:
- Verifique se a entrada é um arquivo ZIP usando
ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase)
. - Se for, adicione-a à lista de entradas a serem removidas.
- Abra a entrada em um objeto MemoryStream usando
ArchiveEntry.Open().CopyTo(MemoryStream)
. - Percorra as entradas do arquivo ZIP interno, realizando o seguinte:
- Adicione o nome de cada entrada à lista de entradas a serem adicionadas.
- Carregue cada entrada em um
MemoryStream
usandoArchiveEntry.Open().CopyTo(MemoryStream)
. - Adicione a entrada à lista de entradas a serem adicionadas ao ZIP pai.
- Verifique se a entrada é um arquivo ZIP usando
- Remover Entradas ZIP Internas: Percorra a lista de arquivos ZIP internos e remova cada entrada usando o método Archive.DeleteEntry(ArchiveEntry).
- Adicionar Novas Entradas ao ZIP Pai: Percorra a lista de entradas a serem adicionadas e inclua cada entrada usando o método Archive.CreateEntry(String, Stream).
- Salvar o Arquivo ZIP Pai: Por fim, salve o arquivo ZIP pai modificado usando o método Archive.Save(String).
Aqui está um exemplo de código demonstrando como criar um arquivo ZIP plano em C#:
Obter 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 tutorial, você aprendeu como criar eficientemente um arquivo ZIP plano usando C#. Demonstramos o processo de extração de arquivos ZIP internos para o ZIP pai, evitando efetivamente pastas aninhadas. Para mais informações, sinta-se à vontade para conferir a documentação do Aspose.ZIP para .NET, ou entre em contato conosco através do nosso fórum.