閱讀21 返回首頁    go 阿裏雲 go 技術社區[雲棲]


工具__Java_SDK使用手冊_歸檔存儲-阿裏雲

本節介紹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();

最後更新:2016-11-23 16:03:56

  上一篇:go 查詢接口__Java_SDK使用手冊_歸檔存儲-阿裏雲
  下一篇:go Python SDK下載__SDK下載_SDK使用手冊_歸檔存儲-阿裏雲