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

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