При работе с архивами из ваших приложений .NET вам может понадобиться манипулировать файлами внутри ZIP. В предыдущем посте вы видели, как добавлять файлы/папки в ZIP-архив. В этой статье вы узнаете, как программно удалять файлы внутри ZIP-архивов на C#. Итак, начнем.
С# .NET API для удаления файлов внутри ZIP-архивов
Aspose.ZIP для .NET — это мощный API, предоставляющий широкий спектр функций архивирования. Он позволяет создавать и управлять архивами популярных форматов, включая ZIP, TAR, 7z и GZip. Мы будем использовать этот API для динамического удаления файлов внутри ZIP-архивов. Вы можете либо установить API из NuGet, либо загрузить библиотеку DLL и сослаться на нее вручную.
PM> Install-Package Aspose.Zip
Удалить файлы внутри ZIP-архивов в С#
Есть два способа удалить файлы внутри ZIP-архива с помощью Aspose.ZIP для .NET. Один использует индекс файла, а другой использует класс ArchiveEntry. Давайте посмотрим, как использовать оба вышеупомянутых метода.
Удалить файл в ZIP с помощью ArchiveEntry
Aspose.ZIP для .NET представляет каждый файл/папку внутри ZIP как объект ArchiveEntry, а все файлы и папки составляют коллекцию объектов ArchiveEntry. Таким образом, чтобы удалить файл из ZIP, вы можете получить доступ и удалить соответствующий объект ArchiveEntry из коллекции. Ниже приведены шаги по удалению файла из ZIP-архива в C#.
- Загрузите ZIP-архив с помощью класса Архив.
- Прокрутите записи в коллекции Archive.Entries.
- Отфильтруйте нужные файлы/папки и добавьте их в список.
- Удалите каждую запись в списке, используя метод Archive.DeleteEntry(ArchvieEntry).
- Сохраните обновленный ZIP-архив методом Archive.Save(string).
В следующем примере кода показано, как удалить файлы внутри ZIP-архива на C#.
// Загрузите ZIP-архив
using (var archive = new Archive("Archives/archive.zip"))
{
// Список для сохранения файлов для удаления
List<ArchiveEntry> entriesToDelete = new List<ArchiveEntry>();
// Цикл по записям ZIP
foreach(ArchiveEntry entry in archive.Entries)
{
// Добавить файл/папку в список
if(entry.Name.ToLower().Contains("source"))
{
entriesToDelete.Add(entry);
}
}
// Удалить все перечисленные записи
foreach(var entry in entriesToDelete)
{
archive.DeleteEntry(entry);
}
// Сохранить обновленный архив
archive.Save("Archives/updated-archive.zip");
}
Удалить файл в ZIP с помощью индекса
Вы также можете удалить записи ZIP, используя их индекс. Ниже приведены шаги по удалению файла/папки из ZIP-архива с использованием его индекса.
- Загрузите ZIP-архив с помощью класса Архив.
- Удалите файл, указав индекс в методе Archive.DeleteEntry(int).
- Сохраните обновленный ZIP-архив методом Archive.Save(string).
В следующем примере кода C# показано, как удалить файл в ZIP-архиве с помощью его индекса.
// Загрузите ZIP-архив
using (var archive = new Archive("Archives/archive.zip"))
{
// Удалить файл по его индексу
archive.DeleteEntry(0);
// Сохранить обновленный архив
archive.Save("Archives/updated-archive.zip");
}
Получите бесплатную лицензию API
Вы можете использовать Aspose.ZIP для .NET без оценочных ограничений, получив бесплатную временную лицензию.
Вывод
В этой статье вы узнали, как удалять файлы из ZIP-архивов на C#. С помощью примеров кода мы увидели, как удалять файлы с помощью класса ArchiveEntry или файла index. Если вы хотите узнать больше об Aspose.ZIP для .NET, вы можете посетить документацию. Также вы можете задать свои вопросы через наш форум.