OSS Java SDK提供了丰富的文件下载方式:

  • 流式下载
  • 下载到本地文件

创建对象

ossClient 实例化后,可以先进行一步非空判断,确定该对象存储中有我们要找的 bucket 和 文件。判断方法如下:

// 创建 OSSClient 实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 判断 bucket 是否存在
Boolean flag_bucket = ossClient.doesBucketExist(bucketName);
// 判断 要下载的文件 是否存在
Boolean flag_file = ossClient.doesObjectExist(bucketName, fileName);

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

OSSObject ossObject = ossClient.getObject(bucketName, fileName);
ossObject.close();

下载方法

1.流式下载

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

下载完成后,我们可以使用缓冲流 BufferedReader 提供的按行读取操作,逐步完成对文件的解析。所以,这种方法非常适合用来解析结构化数据,如:csv文件内容。

以下代码用于将 your_bucket 中 根目录下的 text.csv 按行读取并处理。

import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.OSSObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class OSSFileDownload {// 阿里云 endpointprivate static final String endpoint = "your_endpoint";// 阿里云 accessKeyIdprivate static final String accessKeyId = "your_ak";// 阿里云 accessKeySecret  private static final String accessKeySecret = "your_sk";// bucketprivate static final String bucketName = "your_bucket";// 文件路径private static final String fileName = "test.csv";public static void streamingDownload() {try {// 创建 OSSClient 实例OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);// 判断 bucket 是否存在Boolean flag_bucket = ossClient.doesBucketExist(bucketName);// 判断 要下载的文件 是否存在Boolean flag_file = ossClient.doesObjectExist(bucketName, fileName);// ... 省略了bucket或file不正确的处理逻辑// ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流OSSObject ossObject = ossClient.getObject(bucketName, fileName);// 按行读取文件内容BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent()));while(true){String line = reader.readLine();if (line == null) break;// ... 结构化数据,业务逻辑}// 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作reader.close();// 关闭ossossClient.shutdown();} catch (IOException e) {e.fillInStackTrace();}}
}

2.下载到本地

下面介绍如何将存储空间(Bucket)中的文件(Object)下载到本地文件。

以下代码用于将 your_bucket 中 test_file 目录下的 text.csv 下载到本地 D:\localpath 路径下的 newText.csv。

import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.OSSObject;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;public class OSSFileDownload {// 阿里云 endpointprivate static final String endpoint = "your_endpoint";// 阿里云 accessKeyIdprivate static final String accessKeyId = "your_ak";// 阿里云 accessKeySecret  private static final String accessKeySecret = "your_sk";// bucketprivate static final String bucketName = "your_bucket";// 文件路径private static final String fileName = "test.csv";// 本地文件下载路径private static final String localpath = "D:\\localpath\\newText.csv";public static void localDownload() {try {// 创建 OSSClient 实例OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);// 下载Object到本地文件,并保存到指定的本地路径中。如果指定的本地文件存在会覆盖,不存在则新建。// 如果未指定本地路径,则下载后的文件默认保存到示例程序所属项目对应本地路径中。ossClient.getObject(new GetObjectRequest(bucketName, fileName), new File(localpath));// 关闭OSSClient。ossClient.shutdown();} catch (Exception e) {e.fillInStackTrace();}}
}

对象存储 OSS 文件下载方法:流式下载和本地下载相关推荐

  1. 浅谈阿里云对象存储OSS

    OSS(即Object Storage Service)是一种提供海量.安全.低成本.高可靠的云存储服务,适合存放任意类型的文件.容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本,官方一点 ...

  2. 阿里云对象存储OSS与文件存储NAS的区别

    一.简介 应用场景:选择一款存储产品,面向文档数据的存取,不会涉及到数据处理. 产品选型主要从OSS和NAS中选择一款,满足文档存储的需求. 二.NAS优缺点 NAS 是一种采用直接与网络介质相连的特 ...

  3. 阿里云服务(三)—对象存储OSS和块存储

    五.对象存储OSS 块存储适合存放本地使用的一些文件,而且成本比较高,容量也有一些限制,不是适合数据量庞大的大数据. 1.对象存储OSS的概念   1.1 什么是对象存储OSS     存储分类   ...

  4. 【上传文件】基于阿里云的视频点播VOD、对象存储OSS实现音视频图片等文件上传

    一.效果演示 a.测试界面初始化 b.点击[上传视频] c.点击[开始上传] d.点击[上传音频]选择音频之后点击[开始上传] c.点击[上传图片],注意图片上传为单按钮,选择文件之后自动完成上传 d ...

  5. 一分钟了解阿里云产品:对象存储OSS概述

    阿里云的产品种类繁多,今天让我们一起来了解下对象存储(Object Storage Service,简称OSS)吧! 什么是对象存储呢? 简单来说,对象存储OSS是阿里云提供的海量.安全和高可靠的云存 ...

  6. oss可用性_对象存储OSS详解

    阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量.安全.低成本.高可靠的云存储服务.您可以通过调用 API,在任何应用.任何时间.任何地点上传和下载 ...

  7. 三大场景,对象存储OSS带你快速上云

    本文介绍对象存储OSS的主要应用场景. 图片和音视频等应用的海量存储 OSS可用于图片.音视频.日志等海量文件的存储.各种终端设备.Web网站程序.移动应用可以直接向OSS写入或读取数据.OSS支持流 ...

  8. oss客户端工具_云享会 | 沃云公有云重点产品推荐:文件存储NASamp;对象存储OSS...

    云享会沃云·公有云重点产品推荐系列 第二期:文件存储NAS和对象存储OSS 还在傻傻分不清文件存储NAS和对象存储OSS? 同样是存储类产品哪个更适合你? 马上为你解答! 文件存储NAS和对象存储OS ...

  9. 对象存储OSS之ossbrowser的使用

    对象存储OSS之ossbrowser的使用 一.OSS简介 二.OSS工作原理 三.ossbrowser浏览器安装及使用 1.安装并登录ossbrowser (1).下载并安装ossbrowser. ...

最新文章

  1. 1.5 Kali Linux策略
  2. Linux什么是文件IO,linux中文件IO
  3. JavaEE之使用DOM4J和XPath对xml文档的添加,删除,查询操作
  4. python ipaddr_python之IP地址或IP段处理模块-ipaddr
  5. 什么是mysql索引文件_数据库索引文件一般采用什么数据结构?
  6. bean validation校验方法参数_Spring Validation最佳实践及其实现原理,参数校验没那么简单!
  7. 10月15日发布?一加7T系列概念图曝光:依旧后置竖排相机模组
  8. [spring]spring boot项目实例
  9. 中断(二)—— x86 APIC
  10. a杜比音效编码的两种思路
  11. 集群语言 Python 入门 脚本工具
  12. 使用Markdown如何修改图片大小
  13. TensorFlow学习笔记(一)---graph,op,tensor,Session,Variables,Tensorboard
  14. fgets函数的使用
  15. exec()和eval()
  16. ionic3小知识(持续更新...)
  17. 非你莫属 周倩如 女程序员 神一样的选手!
  18. 2022年上半年全球知名企业十大数据泄露事件
  19. Docker在Linux下载安装及部署
  20. i18n(国际化)地域标识码

热门文章

  1. 概率神经网络(PNN)
  2. 新 Nano(五)自己写个库,读 DHT11 / DHT22
  3. hdu 6194string string string 后缀自动机
  4. 在澳洲学计算机挣得多吗,2020年澳洲计算机科学专业挂科率高吗?
  5. 3.1 向量的模和单位向量
  6. 6. 大尾数法或小尾数法
  7. seekbar自定义android,Android自定义SeekBar实现视频播放进度条
  8. 欧拉角和四元数之间是如何转换的?
  9. rk3568安卓11系统之开发环境搭建
  10. sql语句的各种模糊查询