ZIP-архіви є одним із найпопулярніших і часто використовуваних форматів стиснутих файлів. Основною причиною використання ZIP-файлів є зменшення загального розміру файлу та надсилання кількох файлів як єдиний архів. Як розробник ви можете витягувати текст, зображення та навіть метадані з файлів, стиснених у архівах ZIP. У цій статті ми обговоримо, як розпакувати дані ZIP-архівів у Java.

Видобуток даних із ZIP-файлів у Java

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

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

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

Завантажити або налаштувати

Ви можете завантажити файл JAR із розділу завантажень або просто отримати найновіші конфігурації репозиторію та залежностей для pom.xml ваших програм Java на основі Maven.

<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, відвідайте документацію. Якщо у вас виникли запитання, зв’яжіться з нами через форум.

Дивись також