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

流式下载

更新时间:2018-07-02 14:22:17

如果要下载的文件太大,或者一次性下载耗时太长,您可以通过流式下载,一次处理部分内容,直到完成文件的下载。

OssObject对象使用完毕后必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。关闭方法如下:

  1. OSSObject ossObject = ossClient.getObject(bucketName, objectName);
  2. ossObject.close();

以下代码用于流式下载:

  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. // ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
  11. OSSObject ossObject = ossClient.getObject(bucketName, objectName);
  12. // 读取文件内容。
  13. System.out.println("Object content:");
  14. BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent()));
  15. while (true) {
  16. String line = reader.readLine();
  17. if (line == null) break;
  18. System.out.println("\n" + line);
  19. }
  20. // 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。
  21. reader.close();
  22. // 关闭OSSClient。
  23. ossClient.shutdown();

流式下载的完整代码请参见GitHub

本文导读目录