ZIP 檔案是最流行和最常用的壓縮文件格式之一。使用 ZIP 文件的主要原因是減少總文件大小以及將多個文件作為單個存檔發送。作為開發人員,您可以從 ZIP 存檔中壓縮的文件中提取文本、圖像甚至元數據。在本文中,我們將討論如何用 Java 提取 ZIP 存檔數據。

從 Java 中的 ZIP 文件中提取數據

以下主題涵蓋如下:

用於提取 ZIP 文件數據的 Java API

GroupDocs.Parser 為開發者提供文檔解析解決方案,其中也包含Java API。我將在本文的示例中使用此 Java API 來提取 ZIP 文件數據。此外,此 API 允許從一長串 支持的文檔格式 中提取圖像、原始文本、結構化和格式化文本以及元數據的數據。這些文檔格式包括文字處理文檔、PDF、演示文稿、電子表格、電子郵件、數據庫、電子書等等。

下載或配置

您可以從 下載部分 下載 JAR 文件,或者只獲取基於 maven 的 Java 應用程序的 pom.xml 的最新存儲庫和依賴項配置。

<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>

如何在 Java 中提取 ZIP 文件數據

要從存檔中包含的任何文件中提取數據,您首先需要獲取所有包含的文件。之後,您可以進一步從每個文件中提取任何類型的數據。以下步驟顯示如何提取 ZIP 文件數據並從 Java 中的每個封閉文件中檢索文本。

  • 使用 Parser 類加載 ZIP 存檔。
  • 使用 getContainer 方法提取附件集合。
  • 遍歷每個隨附文件數據的附件。
  • 您可以使用 Parser 類的相應方法獲取其不同類型的數據。

源代碼顯示瞭如何使用 Java 提取 ZIP 文件數據。下面的示例從 ZIP 存檔中的所有文件中提取整個文本。

// 在 Java 中提取 ZIP 檔案數據
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.");
    }
}

上述源代碼的輸出顯示了 ZIP 文件中其中一個 PDF 文件的檢索文本。

 -----------------------------------
 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 

從 Java 中的 ZIP 文件中的文件中提取圖像

不僅限於文本,您還可以類似地提取圖像信息。以下步驟顯示如何提取 ZIP 文件數據並從每個隨附文件中檢索圖像信息。

  • 使用 Parser 類加載 ZIP 存檔。
  • 使用 getContainer 方法提取附件集合。
  • 遍歷附件以獲取每個附件中的圖像集合。
  • 現在遍歷圖像以使用 PageImageArea 類獲取每個圖像的信息。

以下源代碼顯示瞭如何從 Java 中的 ZIP 文件中包含的文件中提取圖像數據。

// 從 Java 中的 ZIP 存檔文件中提取圖像信息
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。

結論

簡而言之,您已經了解瞭如何在 Java 應用程序中提取 ZIP 歸檔數據。此外,您還可以使用 GroupDocs.Parser for Java 從 ZIP 文件中提取圖像。開始為壓縮文件構建數據提取 Java 應用程序。要了解有關 API 的更多信息,請訪問 文檔。如有疑問,請通過論壇 聯繫我們。

也可以看看