Criar Arquivo ZIP Plano em C#

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

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#:

  1. Carregar o Arquivo ZIP Pai: Use a classe Archive para carregar o ZIP pai.
  2. Inicializar Listas: Crie listas para armazenar:
    • Entradas a serem excluídas do ZIP pai
    • Entradas extraídas e seus nomes
  3. Iterar Através das Entradas do Arquivo: Percorra cada ArchiveEntry no ZIP pai usando a coleção Archive.Entries.
  4. 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 usando ArchiveEntry.Open().CopyTo(MemoryStream).
      • Adicione a entrada à lista de entradas a serem adicionadas ao ZIP pai.
  5. Excluir Entradas ZIP Internas: Percorra a lista de arquivos ZIP internos e exclua cada entrada usando o método Archive.DeleteEntry(ArchiveEntry).
  6. 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).
  7. 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

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.