Такі архіви, як ZIP, RAR, TAR, GZIP, BZIP2, зазвичай використовуються для зберігання кількох файлів і папок в одному контейнері. Ще одна головна причина для архівних файлів – це зменшення загального розміру файлу за допомогою алгоритмів стиснення. Подібно до розбору та вилучення даних із документів різних форматів файлів, ви можете працювати з архівними файлами таким же чином. Ви можете витягувати текст, зображення та навіть метадані з файлів, стиснутих в архівах. У цій статті ми обговоримо, як розпакувати дані ZIP-архіву за допомогою C# у ваших програмах .NET.

Нижче описано наступні теми:

.NET API для вилучення даних ZIP-файлів

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

Ви можете завантажити DLL або інсталятор MSI із розділу завантажень або інсталювати API, додавши його пакет до своєї програми .NET за допомогою NuGet.

PM> Install-Package GroupDocs.Parser

Як видобути дані ZIP-файлів у C#

GroupDocs.Parser for .NET підтримує вилучення даних із різних форматів файлів стиснення, таких як ZIP, RAR, TAR, BZIP2 і GZIP. Після отримання колекції файлів із стисненого файлу ви можете далі витягувати будь-які дані з кожного файлу.

Наступні кроки показують, як витягти дані ZIP-файлів і отримати текст із кожного вкладеного файлу на C#.

  • Завантажте ZIP-архів за допомогою класу Parser.
  • Отримайте вкладення за допомогою методу GetContainer.
  • Перегляньте колекцію вкладень.
  • Для кожного вкладення ви можете отримати різні типи даних за допомогою відповідних методів класу Parser.

Вихідний код показує, як видобути дані ZIP-файлів за допомогою C#. У цьому прикладі я буду видобувати весь текст з усіх файлів у ZIP-архіві.

// Видобуток архівних даних ZIP у C#
using (Parser parser = new Parser(@"path/sample.zip"))
{
    // Витягніть насадки з контейнера
    IEnumerable<ContainerItem> attachments = parser.GetContainer();

    // Перебір колекції сутностей
    foreach (ContainerItem item in attachments)
    {
        // Роздрукуйте ІНФОРМАЦІЮ ПРО ФАЙЛ
        Console.WriteLine("-----------------------------------");
        Console.WriteLine("Name: " + item.Name);
        Console.WriteLine("File Size: " + item.Size + " Bytes");
        Console.WriteLine("-----------------------------------");

        try
        {
            using (Parser attachmentParser = item.OpenParser())
            {
                // Витягніть текст об’єкта ZIP
                using (TextReader reader = attachmentParser.GetText())
                {
                    Console.WriteLine(reader == null ? "No text" : reader.ReadToEnd());
                }
            }
        }
        catch (UnsupportedDocumentFormatException)
        {
            Console.WriteLine("Isn't supported.");
        }
    }
}

Результат вихідного коду вище показує текст, отриманий з одного з файлів PDF у файлі ZIP.

 -----------------------------------
 Name: sample.pdf
 File Size: 33370 Bytes
 -----------------------------------

 Heading

 This is the first paragraph of the sample document that contains some sample
 text, bulleted list, numbered list and more.

    •  Bullet Item 1
    •  Bullet Item 2
    •  Bullet Item 3
 
 This is the second paragraph of the sample document and after this, there is a
 numbered list: 

    1. Numbered Item 1
    2. Numbered Item 2
    3. Numbered Item 3 

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

Ви можете отримати безкоштовну тимчасову ліцензію, щоб використовувати API без оціночних обмежень.

Висновок

Підводячи підсумок, ви дізналися, як видобувати дані ZIP-архівів за допомогою C# у своїй програмі .NET. Зокрема, тепер ви можете видобувати дані з файлів ZIP, RAR, TAR, GZIP і BZIP. Ви навіть можете створити власну програму для вилучення даних .NET для стиснутих файлів. Щоб дізнатися більше або дізнатися про API, відвідайте документацію. Якщо у вас виникли запитання, зв’яжіться з нами через форум.

Дивись також