Коли ви працюєте з ZIP-архівами, ви можете зіткнутися зі сценарієм, коли ZIP-файл містить інші ZIP-файли, створюючи вкладену структуру. Якщо ви хочете спростити це, витягнувши всі внутрішні ZIP-архіви в зовнішній архів, ви потрапили в потрібне місце. У цій статті ми розглянемо як створити плоский ZIP-архів у C# за допомогою потужної Aspose.ZIP для .NET.
Зміст
- Огляд .NET API для створення плоских ZIP-архівів
- Кроки для створення плоского ZIP-архіву
- Отримати безкоштовну ліцензію API
- Висновок
- Дивіться також
Огляд .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#:
- Завантажте батьківський ZIP-архів: Використовуйте клас Archive для завантаження батьківського ZIP.
- Ініціалізуйте списки: Створіть списки для зберігання:
- Записів для видалення з батьківського ZIP
- Витягнутих записів та їхніх імен
- Перебирайте записи архіву: Пройдіться через кожен ArchiveEntry у батьківському ZIP, використовуючи колекцію Archive.Entries.
- Обробляйте кожен запис:
- Перевірте, чи є запис ZIP-архівом, використовуючи
ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase)
. - Якщо так, додайте його до списку записів для видалення.
- Відкрийте запис у об’єкті MemoryStream за допомогою
ArchiveEntry.Open().CopyTo(MemoryStream)
. - Переберіть записи внутрішнього ZIP-архіву, виконавши наступні дії:
- Додайте ім’я кожного запису до списку записів, які потрібно додати.
- Завантажте кожен запис у
MemoryStream
, використовуючиArchiveEntry.Open().CopyTo(MemoryStream)
. - Додайте запис до списку записів, які потрібно додати до батьківського ZIP.
- Перевірте, чи є запис ZIP-архівом, використовуючи
- Видаліть внутрішні ZIP-записи: Переберіть список внутрішніх ZIP-архівів і видаліть кожен запис, використовуючи метод Archive.DeleteEntry(ArchiveEntry).
- Додайте нові записи до батьківського ZIP: Переберіть список записів для додавання та включіть кожен запис, використовуючи метод Archive.CreateEntry(String, Stream).
- Збережіть батьківський ZIP-архів: Нарешті, збережіть змінений батьківський ZIP-архів, використовуючи метод Archive.Save(String).
Ось приклад коду, що демонструє, як створити плоский ZIP-архів у C#:
Отримати безкоштовну ліцензію API
Ви можете отримати безкоштовну тимчасову ліцензію для використання Aspose.ZIP для .NET без будь-яких обмежень на оцінку.
Висновок
У цьому навчальному посібнику ви дізналися, як ефективно створити плоский ZIP-архів, використовуючи C#. Ми продемонстрували процес витягування внутрішніх ZIP-архівів у батьківський ZIP, ефективно уникаючи вкладених папок. Для отримання додаткової інформації ви можете ознайомитися з документацією Aspose.ZIP для .NET, або звернутися до нас через наш форум.