开发者社区 问答 正文

Java SDK提供的工具类有哪些

本节介绍Java SDK提供的工具类,包括解析Inventory结果的[backcolor=transparent]InverntoryResult和文件校验码生成[backcolor=transparent]ContentEtagGenerator、文件哈希树校验码生成器[backcolor=transparent]TreeEtagGenerator。

InventoryResult


[backcolor=transparent]InventoryResult是对类型为 INVENTORY_RETRIEVAL的Job结果的解析,包含的成员如下

变量名类型描述
vaultRegionStringVault所在Region
vaultIdStringVault的ID
inventoryDateDateInventory建立的时间
archiveListList<ArchiveDescriptor>Archive列表


ServiceCredentials credentials = new ServiceCredentials("[yourAccessKeyID]", "[yourAccessKeySecret]");

// 高级接口的入口对象
ArchiveManager manager = new ArchiveManager(credentials);

// 下载Archive列表信息
manager.downloadInventory("[yourVaultName]", new File("[pathForSavingInventory]"));

// 解析结果
InventoryResult result = new InventoryResult().load(new File("[pathForInventory]"));
for (ArchiveDescriptor descriptor : result.getArchiveList()) {
    System.out.println(descriptor.getArchiveId());
}


ContentEtagGenerator



[backcolor=transparent]ContentEtagGenerator是用于生成校验码的帮助类,使用方法可参考以下示例。
  • 计算byte[]的校验码byte[] content = { 0x01, 0x02, 0x03 };
  • String contentEtag = new ContentEtagGenerator()
  •     .update(content)
  •     .asHex();

  • 计算String的校验码String content = "abc";
  • String contentEtag = new ContentEtagGenerator()
  •     .update(content)
  •     .asHex();

  • 计算文件的校验码File file = new File("[File Path]");
  • String contentEtag = new ContentEtagGenerator()
  •     .update(file)
  •     .asHex();

  • 计算文件的校验码(指定范围)// 计算指定文件,偏移量为1024,长度为1024 * 1024的字节内容的校验码。
  • File file = new File("[File Path]");
  • String contentEtag = new ContentEtagGenerator()
  •     .update(file, 1024, 1024 * 1024)
  •     .asHex();


其中 asHex返回的是校验码的十六进制字符串表达(大写)。
需要注意的是,[backcolor=transparent]ContentEtagGenerator的计算是带记忆的,也就是说以下两个例子的结果是相同的。 String contentEtagA = new ContentEtagGenerator()
    .update("abc")
    .update("123")
    .asHex();

String contentEtagB = new ContentEtagGenerator()
    .update("abc123")
    .asHex();

assertTrue(contentEtagA.equals(contentEtagB));


  • 如果需要清除ContentEtagGenerator的记忆,请调用ContentEtagGenerator的reset()方法

  • 另外,当调用[backcolor=transparent]asHex方法之后,[backcolor=transparent]ContentEtagGenerator将会被重置,即之后的计算与调用[backcolor=transparent]asHex前输入的数据无关。


TreeEtagGenerator

  • 计算byte[]的校验码

不带长度参数: byte[] content = { 0x01, 0x02, 0x03 };
String contentEtag = new TreeEtagGenerator()
    .update(content)
    .asHex();


带长度参数: byte[] content = { 0x01, 0x02, 0x03, 0xFF, 0xFF };
String contentEtag = new TreeEtagGenerator()
    .update(content, 3) // 第二个参数是有效数据的长度,否则会引起数据紊乱
    .asHex();

  • 计算String的校验码String content = "abc";
  • String contentEtag = new TreeEtagGenerator()
  •     .update(content)
  •     .asHex();

  • 计算文件的校验码File file = new File("[File Path]");
  • String contentEtag = new TreeEtagGenerator()
  •     .update(file)
  •     .asHex();

  • 计算文件的校验码(指定范围)// 计算指定文件,偏移量为1024,长度为1024 * 1024的字节内容的校验码。
  • File file = new File("[File Path]");
  • String contentEtag = new TreeEtagGenerator()
  •     .update(file, 1024, 1024 * 1024)
  •     .asHex();

展开
收起
云栖大讲堂 2017-10-26 15:16:40 2123 分享 版权
阿里云 AI 助理回答

Java SDK工具类介绍

InventoryResult

InventoryResult 类用于解析类型为 INVENTORY_RETRIEVAL 的 Job 结果,它包含了与 Vault(存储桶)相关的库存信息。主要成员变量包括:

  • vaultRegion: String 类型,表示 Vault 所在的区域。
  • vaultId: String 类型,标识 Vault 的唯一ID。
  • inventoryDate: Date 类型,指示库存建立的时间。
  • archiveList: List 类型,列表中包含 Archive 的详细描述。

使用示例:

ServiceCredentials credentials = new ServiceCredentials("[yourAccessKeyID]", "[yourAccessKeySecret]");
ArchiveManager manager = new ArchiveManager(credentials);
manager.downloadInventory("[yourVaultName]", new File("[pathForSavingInventory]"));
InventoryResult result = new InventoryResult().load(new File("[pathForInventory]"));
for (ArchiveDescriptor descriptor : result.getArchiveList()) {
    System.out.println(descriptor.getArchiveId());
}

ContentEtagGenerator

此工具类用于生成内容的校验码,支持对不同类型数据(如字节数组、字符串、文件)进行处理,并可指定计算范围。其特性包括记忆性计算和自动重置机制。

示例代码:

// 计算byte[]的校验码
byte[] content = { 0x01, 0x02, 0x03 };
String contentEtag = new ContentEtagGenerator()
    .update(content)
    .asHex();

// 清除记忆
ContentEtagGenerator generator = new ContentEtagGenerator();
generator.reset();

TreeEtagGenerator

ContentEtagGenerator 类似,但提供了额外的长度参数功能,特别是在处理字节数组时可以避免数据紊乱。适用于需要更精确控制数据处理的场景。

示例应用:

// 带长度参数计算byte[]的校验码
byte[] content = { 0x01, 0x02, 0x03, 0xFF, 0xFF };
String contentEtag = new TreeEtagGenerator()
    .update(content, 3) // 指定有效数据长度
    .asHex();

以上工具类简化了Java应用中处理特定任务的过程,如解析库存信息、生成内容校验码等,提高了开发效率并确保了操作的准确性。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答