工具
更新时间:
本节介绍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();
文档内容是否对您有帮助?