
Ao lidar com arquivos ZIP, você pode se deparar com uma situação em que um arquivo ZIP contém outros arquivos ZIP, levando a uma estrutura aninhada. Se seu objetivo é 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
- Passos 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 API robusta 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
Passos 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, levando à seguinte estrutura:
flatten.zip
├ first.txt
├ picture.gif
├ game.exe
└ subitem.bin
Passos 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 excluídas 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 excluídas.
- Abra a entrada em um objeto MemoryStream usando
ArchiveEntry.Open().CopyTo(MemoryStream)
. - Itere pelas 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
- Excluir Entradas ZIP Internas: Percorra a lista de arquivos ZIP internos e exclua 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 que demonstra 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.
Veja Também
- Adicionar Arquivos ou Pastas a Arquivos ZIP em C#
- Descompactar Arquivos em Arquivos ZIP usando C#
- Mesclar Vários Arquivos ZIP ou TAR em C#
- Criar Arquivo Executável Auto-extraível em C#
Seguindo estes passos, você pode facilmente implementar compressão de arquivo zip plano em C# em suas aplicações, garantindo um arquivo zip de um único arquivo que é eficiente e fácil de gerenciar.