Удалить файлы в ZIP-архиве в C# .NET

При работе с архивами из ваших приложений .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-архива с использованием его индекса.

В следующем примере кода 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, вы можете посетить документацию. Также вы можете задать свои вопросы через наш форум.

Смотрите также