全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
对象存储 OSS

解冻归档文件

更新时间:2018-07-02 15:18:18

归档类型(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();

归档存储类型的详细说明请参见存储类型介绍。解冻归档文件的完整代码请参见GitHUb

本文导读目录