推特 阿里云技术文档正文

工具_Java_SDK参考_开发指南_归档存储

admin 阿里云技术文档 2020-02-11 225 0
阿里云服务器优惠

工具

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

InventoryResult

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

变量名 类型 描述
vaultRegion String Vault所在Region
vaultId String Vault的ID
inventoryDate Date Inventory建立的时间
archiveList List<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

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返回的是校验码的十六进制字符串表达(大写)。

需要注意的是,ContentEtagGenerator的计算是带记忆的,也就是说以下两个例子的结果是相同的。

String contentEtagA = new ContentEtagGenerator()
    .update("abc")
    .update("123")
    .asHex();

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

assertTrue(contentEtagA.equals(contentEtagB));
  • 如果需要清除ContentEtagGenerator的记忆,请调用ContentEtagGenerator的reset()方法

  • 另外,当调用asHex方法之后,ContentEtagGenerator将会被重置,即之后的计算与调用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();
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论

-----