Створення плоского ZIP-архіву в C#

Коли ви працюєте з ZIP-архівами, ви можете зіткнутися зі сценарієм, коли ZIP-файл містить інші ZIP-файли, створюючи вкладену структуру. Якщо ви хочете спростити це, витягнувши всі внутрішні ZIP-архіви в зовнішній архів, ви потрапили в потрібне місце. У цій статті ми розглянемо як створити плоский ZIP-архів у C# за допомогою потужної Aspose.ZIP для .NET.

Зміст

Огляд .NET API для створення плоских ZIP-архівів

Для створення плоских ZIP-архівів ми будемо використовувати бібліотеку Aspose.ZIP для .NET. Цей потужний архіватор API дозволяє створювати та витягувати різні формати архівів, включаючи ZIP, TAR, GZip і 7z. Ви можете легко встановити цю бібліотеку з NuGet або завантажити її DLL з розділу завантажень.

PM> Install-Package Aspose.Zip

Кроки для створення плоского ZIP-архіву в C#

Щоб краще зрозуміти структуру плоского ZIP-архіву, розгляньте наступний приклад. Спочатку у нас є ZIP-архів, що містить інший ZIP-архів:

parent.zip
 ├ first.txt
 ├ inner.zip
 │ ├ game.exe
 │ └ subitem.bin
 └ picture.gif

Після перетворення цього ZIP-архіву в плоску структуру всі записи з внутрішнього ZIP будуть витягнуті в батьківський ZIP, що призведе до наступної структури:

flatten.zip
 ├ first.txt
 ├ picture.gif
 ├ game.exe
 └ subitem.bin

Кроки реалізації

Ось як програмно створити плоский ZIP-архів у C#:

  1. Завантажте батьківський ZIP-архів: Використовуйте клас Archive для завантаження батьківського ZIP.
  2. Ініціалізуйте списки: Створіть списки для зберігання:
    • Записів для видалення з батьківського ZIP
    • Витягнутих записів та їхніх імен
  3. Перебирайте записи архіву: Пройдіться через кожен ArchiveEntry у батьківському ZIP, використовуючи колекцію Archive.Entries.
  4. Обробляйте кожен запис:
    • Перевірте, чи є запис ZIP-архівом, використовуючи ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase).
    • Якщо так, додайте його до списку записів для видалення.
    • Відкрийте запис у об’єкті MemoryStream за допомогою ArchiveEntry.Open().CopyTo(MemoryStream).
    • Переберіть записи внутрішнього ZIP-архіву, виконавши наступні дії:
      • Додайте ім’я кожного запису до списку записів, які потрібно додати.
      • Завантажте кожен запис у MemoryStream, використовуючи ArchiveEntry.Open().CopyTo(MemoryStream).
      • Додайте запис до списку записів, які потрібно додати до батьківського ZIP.
  5. Видаліть внутрішні ZIP-записи: Переберіть список внутрішніх ZIP-архівів і видаліть кожен запис, використовуючи метод Archive.DeleteEntry(ArchiveEntry).
  6. Додайте нові записи до батьківського ZIP: Переберіть список записів для додавання та включіть кожен запис, використовуючи метод Archive.CreateEntry(String, Stream).
  7. Збережіть батьківський ZIP-архів: Нарешті, збережіть змінений батьківський ZIP-архів, використовуючи метод Archive.Save(String).

Ось приклад коду, що демонструє, як створити плоский ZIP-архів у C#:

Отримати безкоштовну ліцензію API

Ви можете отримати безкоштовну тимчасову ліцензію для використання Aspose.ZIP для .NET без будь-яких обмежень на оцінку.

Висновок

У цьому навчальному посібнику ви дізналися, як ефективно створити плоский ZIP-архів, використовуючи C#. Ми продемонстрували процес витягування внутрішніх ZIP-архівів у батьківський ZIP, ефективно уникаючи вкладених папок. Для отримання додаткової інформації ви можете ознайомитися з документацією Aspose.ZIP для .NET, або звернутися до нас через наш форум.

Дивіться також