Introdução

Arquivos zip são vitais para a organização e compactação de dados, mas como modificar seu conteúdo programaticamente? A solução está no Aspose.Zip para .NET, uma biblioteca robusta que simplifica a manipulação de arquivos zip em C#. Neste tutorial, guiaremos você passo a passo pela extração, exclusão e adição de entradas em arquivos zip.

Pré-requisitos

Antes de começarmos, certifique-se de ter o seguinte:

  1. Biblioteca Aspose.Zip para .NET: Instale a biblioteca no seu projeto. Você pode baixá-la aqui.

  2. Diretório de Documentos: Crie um diretório para armazenar seus arquivos zip. Substituir "Your Document Directory" no código com seu caminho real.

Importar namespaces necessários

Comece importando os namespaces necessários:

using Aspose.Zip;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

Etapa 1: Abra o arquivo Zip externo

Comece abrindo seu arquivo zip principal (zip externo):

string dataDir = "Your Data Directory";
using (Archive outer = new Archive(dataDir + "outer.zip"))
{
    // Prossiga para identificar as entradas do CEP interno
}

Etapa 2: Identifique as entradas do CEP interno

Em seguida, identifique e prepare-se para excluir quaisquer arquivos zip internos:

List<ArchiveEntry> entriesToDelete = new List<ArchiveEntry>();
List<string> namesToInsert = new List<string>();
List<MemoryStream> contentToInsert = new List<MemoryStream>();

foreach (ArchiveEntry entry in outer.Entries)
{
    if (entry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase))
    {
        entriesToDelete.Add(entry);
        
        using (MemoryStream innerCompressed = new MemoryStream())
        {
            entry.Open().CopyTo(innerCompressed);
            
            // Extrair entradas internas
            using (Archive inner = new Archive(innerCompressed))
            {
                foreach (ArchiveEntry ie in inner.Entries)
                {
                    namesToInsert.Add(ie.Name);
                    MemoryStream content = new MemoryStream();
                    ie.Open().CopyTo(content);
                    contentToInsert.Add(content);
                }
            }
        }
    }
}

Etapa 3: Excluir entradas do arquivo interno

Depois de reunir as entradas necessárias, exclua as entradas zip internas:

foreach (ArchiveEntry e in entriesToDelete)
{
    outer.DeleteEntry(e);
}

Etapa 4: Adicionar entradas modificadas ao CEP externo

Agora, você pode adicionar as entradas recém-extraídas de volta ao seu arquivo zip externo:

for (int i = 0; i < namesToInsert.Count; i++)
{
    outer.CreateEntry(namesToInsert[i], contentToInsert[i]);
}

Etapa 5: Salve o arquivo Zip modificado

Por fim, salve suas alterações em um novo arquivo zip:

outer.Save(dataDir + "flatten.zip");

Conclusão

O Aspose.Zip para .NET oferece uma maneira simples e poderosa de manipular arquivos zip programaticamente. Este tutorial abordou como extrair, excluir e adicionar entradas a um arquivo zip, ilustrando a versatilidade da biblioteca. Explore diferentes cenários e aprimore suas habilidades de manipulação de arquivos!

Perguntas frequentes

Posso usar o Aspose.Zip para .NET com outras linguagens de programação?

Aspose.Zip foi projetado principalmente para aplicativos .NET, mas o Aspose oferece bibliotecas semelhantes para várias linguagens de programação.

Existe uma versão de avaliação gratuita disponível do Aspose.Zip para .NET?

Sim, uma versão de teste gratuita está disponível para download aqui.

Como obtenho suporte para o Aspose.Zip para .NET?

Visite o Fórum Aspose.Zip para suporte e discussões.

Posso comprar uma licença temporária para o Aspose.Zip para .NET?

Sim, você pode obter uma licença temporária aqui.

Onde posso encontrar a documentação do Aspose.Zip para .NET?

A documentação completa está disponível aqui.