阿里雲團隊努力不懈,力求將最新的技術內容更快地以您最熟悉的語言呈現。本文由簡體中文內容自動轉碼而成,過程無人工干預。阿里雲不保證此自動轉碼的準確性、完整性及時效性。因轉碼造成的任何內容錯誤及因此可能帶來的損失,阿里雲概不負責,敬請見諒。本文内容請以簡體中文版本為準。
全部產品
Search
文件中心

解凍歸檔檔案

更新時間: Oct 19, 2018

歸檔類型(Archive)的檔案需要解凍(Restore)之後才能讀取。非歸檔類型的檔案,不要調用restoreObject方法。

歸檔檔案的狀態變換過程如下:

  1. 歸檔類型的檔案初始時處於冷凍狀態。
  2. 提交解凍操作後,服務端執行解凍,檔案處於解凍中的狀態。
  3. 完成解凍後,可以讀取檔案。解凍狀態預設持續1天,最多延長7天,之後檔案又回到冷凍狀態。

以下代碼用於解凍歸檔檔案:

  1. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. String objectName = "<yourObjectName>";
  8. // 建立OSSClient執行個體。
  9. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  10. ObjectMetadata objectMetadata = ossClient.getObjectMetadata(bucketName, objectName);
  11. // 校驗檔案是否為歸檔檔案。
  12. StorageClass storageClass = objectMetadata.getObjectStorageClass();
  13. if (storageClass == StorageClass.Archive) {
  14. // 解凍檔案。
  15. ossClient.restoreObject(bucketName, objectName);
  16. // 等待解凍完成。
  17. do {
  18. Thread.sleep(1000);
  19. objectMetadata = ossClient.getObjectMetadata(bucketName, objectName);
  20. } while (!objectMetadata.isRestoreCompleted());
  21. }
  22. // 獲取解凍檔案。
  23. OSSObject ossObject = ossClient.getObject(bucketName, objectName);
  24. ossObject.getObjectContent().close();
  25. // 關閉OSSClient。
  26. ossClient.shutdown();

Archive Storage類型的詳細說明請參見儲存類型介紹。解凍歸檔檔案的完整代碼請參見GitHUb