使用 GroupDocs.Parser 在 Java 中提取 ZIP 文件中的文本

如果您需要在 Java 应用程序中 从 zip 存档中提取文本,GroupDocs.Parser 提供了简洁统一的 API,帮您完成繁重的工作。无论是处理电子邮件附件、大批量文档上传,还是备份包,本教程都会一步步指导您——从 Maven 配置到遍历 ZIP 内的每个文件并提取可读内容。

快速答疑

  • 应该使用哪个库? GroupDocs.Parser for Java。
  • 能从 ZIP 中的每个文件提取文本吗? 可以,支持解析器所支持的所有格式。
  • 需要许可证吗? 免费试用可用于评估;生产环境需要正式许可证。
  • 内存使用会是问题吗? 使用 try‑with‑resources 并逐项处理,可保持占用低。
  • 需要哪个 Java 版本? JDK 8 或更高。

您将学到的内容

  • 如何使用 GroupDocs.Parser 在 Java 中 提取 zip 文件的文本。
  • 使用 Maven 或直接下载方式配置库。
  • 读取 zip 附件的实用代码以及检查容器支持情况。
  • 实际场景、性能技巧和故障排查建议。

为什么选择 GroupDocs.Parser 进行 ZIP 提取?

  • 统一 API – 一次调用即可处理数十种文档类型,无需使用多个解析器。
  • 容器感知 – 库可以在开始处理前告知 ZIP 是否支持提取。
  • 资源友好 – 自动流处理和 try‑with‑resources 能保持内存占用适中。

前置条件

在开始之前,请确保您已具备:

  • 已安装并配置 JDK 8+
  • IntelliJ IDEA、Eclipse 或其他任意 Java 兼容编辑器。
  • 基本的 Maven 使用经验(或手动添加 JAR 包的能力)。

必要的库、版本及依赖

您需要最新的 GroupDocs.Parser for Java。下面给出 Maven 坐标。

Maven 配置

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/parser/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-parser</artifactId>
      <version>25.5</version>
   </dependency>
</dependencies>

直接下载
您也可以从 GroupDocs.Parser for Java releases 下载最新版本。

许可证获取

  • 免费试用: 先使用试用版了解功能。
  • 临时许可证: 使用临时密钥进行无限制测试。
  • 购买: 生产环境请获取正式许可证以去除评估限制。

如何在 Java 中提取 zip 文本

下面将实现分为两个实用功能:

  1. 提取 zip 附件 – 从压缩包内的每个文件中提取文本。
  2. 检查容器提取支持 – 验证 ZIP 是否可处理并列出其内容。

功能 1 – 提取 Zip 附件

步骤 1:初始化 Parser

try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/SampleZip.zip")) {
    // Proceed with extraction logic...
}

步骤 2:遍历附件并提取文本

Iterable<ContainerItem> attachments = parser.getContainer();
if (attachments == null) {
    System.out.println("Container extraction isn't supported");
} else {
    for (ContainerItem item : attachments) {
        try (Parser attachmentParser = item.openParser()) {
            // Attempt to extract text from each zip entity
            try (TextReader reader = attachmentParser.getText()) {
                String extractedText = reader == null ? "No text" : reader.readToEnd();
                System.out.println(extractedText);
            }
        } catch (UnsupportedDocumentFormatException ex) {
            System.out.println("The format of the contained document isn't supported.");
        }
    }
}

这里发生了什么?

  • parser.getContainer() 返回 ZIP 内每个条目的可迭代对象。
  • 对于每个 ContainerItem,我们打开专用的 Parser 实例(item.openParser())。
  • attachmentParser.getText() 尝试读取文本内容;如果格式不受支持,则捕获异常并继续。

功能 2 – 验证容器提取支持

步骤 1:初始化 Parser(同上)

try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY/SampleZip.zip")) {
    // Check supported operations...
}

步骤 2:列出 ZIP 内的文件路径

Iterable<ContainerItem> attachments = parser.getContainer();
if (attachments == null) {
    System.out.println("Container extraction isn't supported");
} else {
    for (ContainerItem item : attachments) {
        System.out.println(item.getFilePath()); // Output the file path of each item
    }
}

为什么重要:
了解内部结构可以帮助您决定是否处理该压缩包、跳过不支持的文件,或向用户提供预览。

实际应用场景

  1. 电子邮件附件处理 – 自动提取并索引归档邮件附件中的文本。
  2. 文档管理系统 – 处理用户一次性上传的多个文件压缩包,仍能对内容进行搜索。
  3. 备份与恢复验证 – 在恢复前验证归档文档是否包含预期文本。

性能考虑

  • 迭代处理: 示例一次读取一个文件,避免在处理大型压缩包时出现内存峰值。
  • Try‑with‑Resources: 确保每个 ParserTextReader 及时关闭,防止资源泄漏。
  • 多线程(进阶): 对于超大 ZIP,可并行化循环,但每个线程必须使用独立的 Parser 实例。

常见问题与解决方案

问题原因解决方案
Container extraction isn't supportedZIP 包含解析器无法处理的格式。检查压缩包内的文件类型,仅对受支持的格式进行解析。
UnsupportedDocumentFormatException嵌套文档的格式未被识别。跳过该文件,或在压缩前将其转换为受支持的类型。
大型压缩包导致内存激增同时加载了太多文件。按示例逐个处理,避免一次性将所有提取文本存入集合。

常见问答

Q: 什么是 GroupDocs.Parser Java?
A: 它是一个库,可从多种文档格式(包括 PDF、Office 文件等)中提取文本、元数据和图像。

Q: 能否使用该库从 zip 中提取非文本文件(如图片)?
A: 主要关注文本提取,但也可以通过额外的 API 调用获取图像和其他二进制内容。

Q: 如何高效处理非常大的 ZIP 文件?
A: 使用上述迭代方式,将 Parser 放在 try‑with‑resources 块中,并避免一次性加载所有内容到内存。

Q: GroupDocs.Parser 能用于商业应用吗?
A: 可以,但需要有效的生产许可证。

Q: 遇到问题时该向哪里求助?
A: 访问免费支持论坛 GroupDocs Support Forum

其他资源

立即开始集成 extract text from zip 功能,让您的 Java 应用能够读取压缩包中隐藏的每份文档!


最后更新: 2026-02-21
测试环境: GroupDocs.Parser 25.5
作者: GroupDocs