ZIP-архивы являются одним из самых популярных и часто используемых форматов сжатых файлов. Основной причиной использования ZIP-файлов является уменьшение общего размера файла и отправка нескольких файлов в виде одного архива. Как разработчик, вы можете извлекать текст, изображения и даже метаданные из файлов, сжатых в ZIP-архивах. В этой статье мы обсудим, как извлекать данные из ZIP-архивов в Java.

Извлечение данных из ZIP-файлов в Java

Ниже рассматриваются следующие темы:

Java API для извлечения данных ZIP-файлов

GroupDocs.Parser предоставляет решение для синтаксического анализа документов для разработчиков, которое также включает Java API. Я буду использовать этот Java API для извлечения данных ZIP-файлов в примерах этой статьи. Кроме того, этот API позволяет извлекать изображения, необработанный текст, структурированный и форматированный текст, а также метаданные из длинного списка поддерживаемых форматов документов. Эти форматы документов включают текстовые документы, PDF, презентации, электронные таблицы, электронные письма, базы данных, электронные книги и многие другие.

Загрузите или настройте

Вы можете загрузить файл JAR из раздела загрузок или просто получить последний репозиторий и конфигурации зависимостей для pom.xml ваших на основе maven приложений Java.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
	<groupId>com.groupdocs</groupId>
	<artifactId>groupdocs-parser</artifactId>
	<version>21.2</version> 
</dependency>

Как извлечь данные ZIP-файлов в Java

Чтобы извлечь данные из любого файла, вложенного в архив, вам сначала нужно получить все вложенные файлы. После этого вы можете дополнительно извлечь любые данные из каждого файла. Следующие шаги показывают, как извлекать данные из ZIP-файлов и извлекать текст из каждого вложенного файла в Java.

  • Загрузите ZIP-архив, используя класс Parser.
  • Извлеките коллекцию вложений с помощью метода getContainer.
  • Просмотрите вложения для данных каждого вложенного файла.
  • Вы можете получить различные данные, используя соответствующие методы класса Parser.

Исходный код показывает, как извлечь данные из ZIP-файлов с помощью Java. В приведенном ниже примере извлекается весь текст из всех файлов в ZIP-архиве.

// Извлечение данных ZIP-архивов в Java
Parser parser = new Parser("path/archive.zip");
// Извлечение вложений из контейнера
Iterable<ContainerItem> attachments = parser.getContainer();

// Перебрать коллекцию объектов ZIP
for (ContainerItem item : attachments) {
    // Распечатать ИНФОРМАЦИЮ О ФАЙЛЕ
    System.out.println("-----------------------------------");
    System.out.println("Name: " + item.getName());
    System.out.println("File Size: " + item.getSize() + " Bytes");
    System.out.println("-----------------------------------");

    try {
        Parser attachmentParser = item.openParser();
        TextReader reader = attachmentParser.getText();
        System.out.println(reader == null ? "No text" : reader.readToEnd());
    } 
    catch (UnsupportedDocumentFormatException ex) {
        System.out.println("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 

Извлечение изображений из файлов в ZIP-файлах в Java

Не ограничиваясь только текстом, вы также можете аналогичным образом извлекать информацию об изображениях. Следующие шаги показывают, как извлечь данные ZIP-файлов и получить информацию об изображениях из каждого вложенного файла.

  • Загрузите ZIP-архив, используя класс Parser.
  • Извлеките коллекцию вложений с помощью метода getContainer.
  • Просмотрите вложения, чтобы получить коллекцию изображений в каждом вложении.
  • Теперь просмотрите изображения, чтобы получить информацию о каждом изображении, используя класс PageImageArea.

В следующем исходном коде показано, как извлечь данные изображения из файлов, заключенных в ZIP-файлы на Java.

// Извлечение информации об изображениях из файла в ZIP-архиве на Java
Parser parser = new Parser("path/archive.zip");
// Извлечение вложений из контейнера
Iterable<ContainerItem> attachments = parser.getContainer();

// Перебрать коллекцию объектов ZIP
for (ContainerItem item : attachments) {
    try {
        Parser attachmentParser = item.openParser();
        Iterable<PageImageArea> images = attachmentParser.getImages();
        if (images != null) {
            int imageCount = 1;
            for (PageImageArea image : images) {
                // Распечатайте индекс страницы, прямоугольник и тип изображения:
                System.out.println(String.format("Image# %d \nPage: %d\nFile Type: %s", imageCount, image.getPage().getIndex()+1, image.getFileType()));
                imageCount++;
            }
        }
    } 
    catch (UnsupportedDocumentFormatException ex) {
        System.out.println("Isn't supported.");
    }
}
Image# 1 
Page: 1
File Type: JPEG Image (.jpeg) 

Получите бесплатную лицензию API

Вы можете получить бесплатную временную лицензию для использования API без ограничений пробной версии.

Вывод

Короче говоря, вы узнали, как извлекать данные из ZIP-архивов в ваших Java-приложениях. Кроме того, вы также можете извлекать изображения из ZIP-файлов с помощью GroupDocs.Parser for Java. Начните создавать Java-приложение для извлечения данных из сжатых файлов. Чтобы узнать больше об API, посетите документацию. По вопросам обращайтесь к нам через форум.

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