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#.
- Cargue el archivo ZIP usando la clase Archive.
- Recorra las entradas en la colección Archive.Entries.
- Filtre los archivos/carpetas deseados y agréguelos a una lista.
- Elimine cada entrada de la lista usando el método Archive.DeleteEntry(ArchvieEntry).
- Guarde el archivo ZIP actualizado usando el método Archive.Save(string).
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.
- Cargue el archivo ZIP usando la clase Archive.
- Elimine el archivo especificando el índice en el método Archive.DeleteEntry(int).
- Guarde el archivo ZIP actualizado usando el método Archive.Save(string).
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.