使用 GroupDocs.Metadata 获取 Java 压缩大小

在现代数据中心的应用中,get compressed size java 是一个常见需求,当您需要在不解压的情况下检查存储在 RAR 归档中的文件大小时尤为重要。无论您是在构建备份验证工具、数字资产管理系统,还是文件共享门户,读取这些元数据都能节省时间和系统资源。本指南将手把手教您如何使用 GroupDocs.Metadata for Java 快速、安全且代码量极少地获取每个条目的压缩大小。

快速答案

  • 需要的库是什么? GroupDocs.Metadata for Java
  • 我可以检索压缩大小吗? 是的 – 对每个条目调用 rarFile.getCompressedSize()
  • 我需要许可证吗? 免费试用可用于开发;生产环境需购买正式许可证
  • 支持哪个 Java 版本? Java 8+(任何兼容 Maven 的环境)
  • 批处理是否可行? 完全可以 – 循环处理文件夹中的 RAR 文件并复用相同代码
  • 如何处理大型归档? 逐条处理条目,完成后关闭 metadata 对象

什么是 “get compressed size java” 以及它为何重要?

Get compressed size java 读取文件在 RAR 容器中存储时的大小。该数值告诉您文件在压缩后占用了多少空间,帮助您验证压缩比、估算传输时间,并在清单报告中同时展示原始大小和压缩大小。

如何从 RAR 归档中获取 get compressed size java?

使用 GroupDocs.Metadata 加载 RAR 归档,遍历其条目,并对每个文件条目调用 getCompressedSize() 方法。此方式仅读取归档头部,无需解压或完整加载文件,即使是数百兆的归档,内存使用也保持在 5 MB 以下。

步骤 1:初始化 Metadata 对象

通过提供 RAR 文件路径创建 Metadata 实例。该对象在内存中表示归档,并让您访问其内部结构。

步骤 2:获取 RAR 归档的根包

调用 metadata.getRootPackage() 获取包含所有条目的顶层包。返回的 ArchivePackage 让您枚举归档内的文件和文件夹。

步骤 3:检索总条目数

使用 archivePackage.getEntries().size() 了解存储了多少项。知道条目数量有助于为批处理作业分配进度跟踪结构。

步骤 4:遍历每个文件并读取其属性

遍历 archivePackage.getEntries()。对每个表示文件(而非文件夹)的条目,调用 entry.getCompressedSize() 获取其压缩大小(字节)。如果需要进行比率计算,还可以读取 entry.getOriginalSize() 获取未压缩大小。

故障排除提示

  • 验证 rarFilePath 指向一个存在的 RAR 文件。
  • 确保应用程序对归档具有读取权限。
  • 如果遇到 “unsupported format” 错误,确认 RAR 版本与 GroupDocs.Metadata 兼容(支持 RAR 4 和 RAR 5)。

为什么在 RAR 文件中使用 GroupDocs.Metadata?

GroupDocs.Metadata 提供高级 API,能够在不解压文件的情况下读取归档头部,快速获取压缩大小、原始大小、时间戳等属性。它支持 RAR 4 与 RAR 5 格式,高效处理大型归档,并抽象格式细节,使开发者能够编写跨归档类型的统一代码。

常见使用场景

  1. 数据管理系统 – 自动编目归档内容以供可搜索的清单。
  2. 数字资产管理 – 使用归档级别的细节(如压缩大小)丰富媒体库。
  3. 备份验证 – 将存储的压缩大小与预期值比较,以检测损坏。
  4. 文件共享平台 – 在不完全提取文件的情况下显示归档摘要,提升用户体验。

性能考虑因素

  • 仅访问所需属性 – 如果只需要文件名和大小,避免调用耗时的方法。
  • 释放 metadata 对象 – 处理完后调用 metadata.close() 以释放本机资源。
  • 批处理 – 在循环中处理多个 RAR 文件,复用同一 JVM 以减少启动开销。

常见问题解答

问:GroupDocs.Metadata for Java 是什么?
答:GroupDocs.Metadata for Java 是一个库,可在不提取文件的情况下读取、更新和管理超过 50 种文件格式(包括 RAR、ZIP、7z)的元数据。

问:如何获取完整访问的许可证?
答:访问 GroupDocs purchase page 以获取临时或永久许可证;开发者可使用免费试用版。

问:我可以将 GroupDocs.Metadata 与 RAR 之外的其他归档类型一起使用吗?
答:可以,相同的 API 同时支持 ZIP、7z 等多种归档格式,便于统一管理所有归档元数据任务。

问:处理大型 RAR 文件时常见的陷阱是什么?
答:主要问题是内存消耗和文件句柄限制;通过逐条处理条目并及时关闭 Metadata 对象可予以缓解。

问:如果遇到问题,我可以在哪里获得支持?
答:请前往 GroupDocs free support forum 获取厂商工程师和社区的帮助。

资源

结论

现在您已经了解 如何使用 GroupDocs.Metadata 从 RAR 归档中提取完整的元数据,包括 get compressed size java 的获取方法。将此模式集成到项目中,可提升数据管理能力、改进备份验证,并在无需完整解压的情况下丰富文件搜索体验。

接下来的步骤

在官方文档中探索更新条目注释或提取校验和信息等更多功能,并考虑将此元数据提取与现有索引管道结合,实现完整可搜索的归档仓库。


最后更新: 2026-06-22
测试环境: GroupDocs.Metadata 24.12 for Java
作者: GroupDocs

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

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-metadata</artifactId>
      <version>24.12</version>
   </dependency>
</dependencies>
import com.groupdocs.metadata.Metadata;

public class MetadataSetup {
    public static void main(String[] args) {
        // Initialize metadata object
        Metadata metadata = new Metadata("path/to/your/document");
        System.out.println("Metadata initialized successfully.");
    }
}
// Specify the path to your input RAR file
String rarFilePath = "YOUR_DOCUMENT_DIRECTORY/input.rar";

// Initialize Metadata object with the specified RAR file path\ nMetadata metadata = new Metadata(rarFilePath);
// Obtain the root package of the RAR archive
RarRootPackage root = metadata.getRootPackageGeneric();
// Retrieve and print the total number of entries in the RAR package
int totalEntries = root.getRarPackage().getTotalEntries();
system.out.println("Total Entries: " + totalEntries);
// Iterate over each file within the RAR archive
for (RarFile rarFile : root.getRarPackage().getFiles()) {
    // Print file name, compressed size, modification date time, and uncompressed size
    System.out.println("File Name: " + rarFile.getName());
    System.out.println("Compressed Size: " + rarFile.getCompressedSize());
    System.out.println("Modification Date Time: " + rarFile.getModificationDateTime());
    System.out.println("Uncompressed Size: " + rarFile.getUncompressedSize());
}

相关教程