Excluir arquivos em um arquivo ZIP em C# .NET

Ao trabalhar com arquivos dentro de seus aplicativos .NET, você pode precisar manipular arquivos dentro de um ZIP. No post anterior, você viu como adicionar arquivos/pastas em um arquivo ZIP. Neste artigo, você aprenderá como excluir arquivos dentro dos arquivos ZIP programaticamente em C#. Então vamos começar.

API C# .NET para excluir arquivos dentro de arquivos ZIP

Aspose.ZIP for .NET é uma API poderosa que fornece uma ampla variedade de recursos de arquivamento. Ele permite que você crie e manipule arquivos de formatos populares, incluindo ZIP, TAR, 7z e GZip. Usaremos esta API para excluir os arquivos dentro de arquivos ZIP dinamicamente. Você pode instalar a API de NuGet ou baixar a DLL e referenciá-la manualmente.

PM> Install-Package Aspose.Zip 

Excluir arquivos dentro de arquivos ZIP em C#

Existem duas maneiras de excluir arquivos dentro de um arquivo ZIP usando Aspose.ZIP para .NET. Um está usando o índice do arquivo enquanto o outro está usando a classe ArchiveEntry. Vamos ver como usar os dois métodos acima mencionados.

Excluir um arquivo em ZIP usando ArchiveEntry

Aspose.ZIP para .NET representa cada arquivo/pasta dentro de um ZIP como um objeto ArchiveEntry e todos os arquivos e pastas fazem uma coleção de objetos ArchiveEntry. Assim, para excluir um arquivo do ZIP, você pode acessar e excluir o objeto ArchiveEntry relevante da coleção. A seguir estão as etapas para excluir um arquivo de um arquivo ZIP em C#.

O exemplo de código a seguir mostra como excluir arquivos dentro de um arquivo ZIP em C#.

// Carregar o arquivo ZIP
using (var archive = new Archive("Archives/archive.zip"))
{
    // Lista para manter os arquivos a serem excluídos
    List<ArchiveEntry> entriesToDelete = new List<ArchiveEntry>();

    // Percorrer entradas ZIP
    foreach(ArchiveEntry entry in archive.Entries)
    {
        // Adicionar arquivo/pasta na lista
        if(entry.Name.ToLower().Contains("source"))
        {
            entriesToDelete.Add(entry);
        }
    } 

    // Excluir todas as entradas listadas
    foreach(var entry in entriesToDelete)
    {
        archive.DeleteEntry(entry);
    }

    // Salvar arquivo atualizado
    archive.Save("Archives/updated-archive.zip");
}

Excluir um arquivo em ZIP usando o índice

Você também pode excluir as entradas ZIP usando seu índice. A seguir estão as etapas para remover um arquivo/pasta de um arquivo ZIP usando seu índice.

O exemplo de código C# a seguir mostra como remover um arquivo em um arquivo ZIP usando seu índice.

// Carregar o arquivo ZIP
using (var archive = new Archive("Archives/archive.zip"))
{
    // Excluir arquivo por seu índice
    archive.DeleteEntry(0);

    // Salvar arquivo atualizado
    archive.Save("Archives/updated-archive.zip");
}

Obtenha uma licença de API gratuita

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

Conclusão

Neste artigo, você aprendeu como excluir arquivos de arquivos ZIP em C#. Com a ajuda de exemplos de código, vimos como excluir arquivos usando a classe ArchiveEntry ou o índice. Caso você queira saber mais sobre o Aspose.ZIP para .NET, você pode visitar documentação. Além disso, você pode fazer suas perguntas através do nosso fórum.

Veja também