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

Вступ

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

Чому слід створювати плоский ZIP?

Створення плоского ZIP-архіву має кілька переваг:

  • Спрощує управління ZIP-файлами: Зменшує складність при обробці кількох файлів.
  • Вилучає всі вкладені ZIP вмісти в один архів: Консолідує файли для зручнішого доступу.
  • Зменшує надмірні структури папок: Спрощує організацію файлів.

Зміст

  1. Налаштування обробки ZIP-архівів у C#
  2. Кроки для створення плоского ZIP-архіву
  3. Збереження плоского ZIP-файлу
  4. Пакетна обробка кількох ZIP-архівів
  5. Отримання безкоштовної ліцензії API
  6. Висновок та додаткові ресурси

1. Налаштування обробки ZIP-архівів у C#

Щоб ефективно обробляти вкладені ZIP-архіви, ми будемо використовувати Aspose.ZIP для .NET. Ця потужна бібліотека надає:

  • Автоматизоване вилучення та повторне стиснення ZIP.
  • Підтримка кількох форматів архівів: ZIP, TAR, GZip та інших.
  • Ефективна обробка великих архівів.

Встановлення

Ви можете легко встановити бібліотеку через NuGet:

PM> Install-Package Aspose.Zip

Альтернативно, ви можете завантажити DLL з Сторінки завантажень Aspose.


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

Розгляньте наступну вкладену ZIP-структуру:

parent.zip
 ├ first.txt
 ├ inner.zip
 │ ├ file1.exe
 │ └ data.bin
 └ picture.gif

Після сплющення всі вмісти внутрішніх ZIP будуть консолідовані в батьківський ZIP:

flattened.zip
 ├ first.txt
 ├ picture.gif
 ├ file1.exe
 └ data.bin

Приклад коду

Ось як ви можете автоматизувати вилучення вкладених ZIP-файлів:

// Завантажте батьківський ZIP-файл
using (Archive parentZip = new Archive("parent.zip"))
{
    List<ArchiveEntry> toDelete = new List<ArchiveEntry>();
    List<string> newEntryNames = new List<string>();
    List<MemoryStream> newStreams = new List<MemoryStream>();

    foreach (ArchiveEntry entry in parentZip.Entries)
    {
        if (entry.Name.EndsWith(".zip", StringComparison.OrdinalIgnoreCase))
        {
            toDelete.Add(entry);
            using (MemoryStream zipStream = new MemoryStream())
            {
                entry.Open().CopyTo(zipStream);
                zipStream.Position = 0;
                using (Archive innerZip = new Archive(zipStream))
                {
                    foreach (ArchiveEntry innerEntry in innerZip.Entries)
                    {
                        using (MemoryStream entryStream = new MemoryStream())
                        {
                            innerEntry.Open().CopyTo(entryStream);
                            newEntryNames.Add(innerEntry.Name);
                            newStreams.Add(entryStream);
                        }
                    }
                }
            }
        }
    }

    foreach (var entry in toDelete)
        parentZip.DeleteEntry(entry);

    for (int i = 0; i < newEntryNames.Count; i++)
        parentZip.CreateEntry(newEntryNames[i], newStreams[i]);

    parentZip.Save("flattened.zip");
}

Цей метод ефективно автоматизує вилучення вкладених ZIP-файлів, забезпечуючи плавний робочий процес.


3. Збереження плоского ZIP-файлу

Після того, як ви вилучили вмісти вкладених ZIP, збережіть плоский ZIP-файл за допомогою наступного рядка коду:

parentZip.Save("flattened.zip");

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


4. Пакетна обробка кількох ZIP-архівів

Якщо вам потрібно сплющити кілька ZIP-архівів, розташованих у певній папці, ви можете використовувати наступний фрагмент коду:

string[] files = Directory.GetFiles("zip_folder", "*.zip");
foreach (string file in files)
{
    using (Archive archive = new Archive(file))
    {
        archive.ExtractToDirectory("output_folder");
    }
}

Цей метод дозволяє автоматизувати пакетну обробку ZIP, економлячи ваш час і зусилля.


5. Отримання безкоштовної ліцензії API

Щоб розблокувати всі можливості Aspose.ZIP, ви можете запитати безкоштовну тимчасову ліцензію.

Для отримання всебічної документації відвідайте Посібник Aspose.ZIP. Якщо у вас є запитання, не соромтеся спілкуватися з громадою на форумі Aspose.


6. Висновок та додаткові ресурси

Резюме

У цьому посібнику ми розглянули:

Як сплющити ZIP-файли в C#
Вилучення вкладених ZIP-архівів
Збереження фінального ZIP-архіву
Обробка кількох ZIP-файлів одночасно

З Aspose.ZIP для .NET ви можете ефективно вилучати та керувати ZIP-архівами у ваших додатках. Почніть оптимізувати свої робочі процеси обробки ZIP сьогодні!