工具
更新时间:
本节介绍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();
该文章对您有帮助吗?