Eliminar archivos en un archivo ZIP en C# .NET

Mientras trabaja con archivos desde sus aplicaciones .NET, es posible que necesite manipular archivos dentro de un ZIP. En la publicación anterior, vio cómo agregar archivos/carpetas en un archivo ZIP. En este artículo, aprenderá cómo eliminar archivos dentro de los archivos ZIP mediante programación en C#. Vamos a empezar.

C# .NET API para eliminar archivos dentro de archivos ZIP

Aspose.ZIP for .NET es una potente API que proporciona una amplia gama de funciones de archivo. Le permite crear y manipular archivos de formatos populares, incluidos ZIP, TAR, 7z y GZip. Usaremos esta API para eliminar los archivos dentro de los archivos ZIP de forma dinámica. Puede instalar la API desde NuGet o descargar la DLL y hacer referencia a ella manualmente.

PM> Install-Package Aspose.Zip 

Eliminar archivos dentro de archivos ZIP en C#

Hay dos formas de eliminar archivos dentro de un archivo ZIP usando Aspose.ZIP for .NET. Uno usa el índice del archivo mientras que el otro usa la clase ArchiveEntry. Veamos cómo usar los dos métodos mencionados anteriormente.

Eliminar un archivo en ZIP usando ArchiveEntry

Aspose.ZIP for .NET representa cada archivo/carpeta dentro de un ZIP como un objeto ArchiveEntry y todos los archivos y carpetas forman una colección de objetos ArchiveEntry. Por lo tanto, para eliminar un archivo de ZIP, puede acceder y eliminar el objeto ArchiveEntry relevante de la colección. Los siguientes son los pasos para eliminar un archivo de un archivo ZIP en C#.

El siguiente ejemplo de código muestra cómo eliminar archivos dentro de un archivo ZIP en C#.

// Cargue el archivo ZIP
using (var archive = new Archive("Archives/archive.zip"))
{
    // Lista para mantener los archivos para ser eliminados
    List<ArchiveEntry> entriesToDelete = new List<ArchiveEntry>();

    // Recorra las entradas ZIP
    foreach(ArchiveEntry entry in archive.Entries)
    {
        // Agregar archivo/carpeta a la lista
        if(entry.Name.ToLower().Contains("source"))
        {
            entriesToDelete.Add(entry);
        }
    } 

    // Eliminar todas las entradas enumeradas
    foreach(var entry in entriesToDelete)
    {
        archive.DeleteEntry(entry);
    }

    // Guardar archivo actualizado
    archive.Save("Archives/updated-archive.zip");
}

Eliminar un archivo en ZIP usando el índice

También puede eliminar las entradas ZIP utilizando su índice. Los siguientes son los pasos para eliminar un archivo/carpeta de un archivo ZIP utilizando su índice.

El siguiente ejemplo de código C# muestra cómo eliminar un archivo en un archivo ZIP usando su index.

// Cargue el archivo ZIP
using (var archive = new Archive("Archives/archive.zip"))
{
    // Eliminar archivo por su índice
    archive.DeleteEntry(0);

    // Guardar archivo actualizado
    archive.Save("Archives/updated-archive.zip");
}

Obtenga una licencia de API gratuita

Puede usar Aspose.ZIP for .NET sin limitaciones de evaluación al obtener una licencia temporal gratuita.

Conclusión

En este artículo, ha aprendido a eliminar archivos de archivos ZIP en C#. Con la ayuda de ejemplos de código, hemos visto cómo eliminar archivos usando la clase ArchiveEntry o index. En caso de que desee obtener más información sobre Aspose.ZIP for .NET, puede visitar documentación. Además, puede hacer sus preguntas a través de nuestro foro.

Ver también