对象存储 OSS 文件下载方法:流式下载和本地下载
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 文件下载方法:流式下载和本地下载相关推荐
- 浅谈阿里云对象存储OSS
OSS(即Object Storage Service)是一种提供海量.安全.低成本.高可靠的云存储服务,适合存放任意类型的文件.容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本,官方一点 ...
- 阿里云对象存储OSS与文件存储NAS的区别
一.简介 应用场景:选择一款存储产品,面向文档数据的存取,不会涉及到数据处理. 产品选型主要从OSS和NAS中选择一款,满足文档存储的需求. 二.NAS优缺点 NAS 是一种采用直接与网络介质相连的特 ...
- 阿里云服务(三)—对象存储OSS和块存储
五.对象存储OSS 块存储适合存放本地使用的一些文件,而且成本比较高,容量也有一些限制,不是适合数据量庞大的大数据. 1.对象存储OSS的概念 1.1 什么是对象存储OSS 存储分类 ...
- 【上传文件】基于阿里云的视频点播VOD、对象存储OSS实现音视频图片等文件上传
一.效果演示 a.测试界面初始化 b.点击[上传视频] c.点击[开始上传] d.点击[上传音频]选择音频之后点击[开始上传] c.点击[上传图片],注意图片上传为单按钮,选择文件之后自动完成上传 d ...
- 一分钟了解阿里云产品:对象存储OSS概述
阿里云的产品种类繁多,今天让我们一起来了解下对象存储(Object Storage Service,简称OSS)吧! 什么是对象存储呢? 简单来说,对象存储OSS是阿里云提供的海量.安全和高可靠的云存 ...
- oss可用性_对象存储OSS详解
阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量.安全.低成本.高可靠的云存储服务.您可以通过调用 API,在任何应用.任何时间.任何地点上传和下载 ...
- 三大场景,对象存储OSS带你快速上云
本文介绍对象存储OSS的主要应用场景. 图片和音视频等应用的海量存储 OSS可用于图片.音视频.日志等海量文件的存储.各种终端设备.Web网站程序.移动应用可以直接向OSS写入或读取数据.OSS支持流 ...
- oss客户端工具_云享会 | 沃云公有云重点产品推荐:文件存储NASamp;对象存储OSS...
云享会沃云·公有云重点产品推荐系列 第二期:文件存储NAS和对象存储OSS 还在傻傻分不清文件存储NAS和对象存储OSS? 同样是存储类产品哪个更适合你? 马上为你解答! 文件存储NAS和对象存储OS ...
- 对象存储OSS之ossbrowser的使用
对象存储OSS之ossbrowser的使用 一.OSS简介 二.OSS工作原理 三.ossbrowser浏览器安装及使用 1.安装并登录ossbrowser (1).下载并安装ossbrowser. ...
最新文章
- 1.5 Kali Linux策略
- Linux什么是文件IO,linux中文件IO
- JavaEE之使用DOM4J和XPath对xml文档的添加,删除,查询操作
- python ipaddr_python之IP地址或IP段处理模块-ipaddr
- 什么是mysql索引文件_数据库索引文件一般采用什么数据结构?
- bean validation校验方法参数_Spring Validation最佳实践及其实现原理,参数校验没那么简单!
- 10月15日发布?一加7T系列概念图曝光:依旧后置竖排相机模组
- [spring]spring boot项目实例
- 中断(二)—— x86 APIC
- a杜比音效编码的两种思路
- 集群语言 Python 入门 脚本工具
- 使用Markdown如何修改图片大小
- TensorFlow学习笔记(一)---graph,op,tensor,Session,Variables,Tensorboard
- fgets函数的使用
- exec()和eval()
- ionic3小知识(持续更新...)
- 非你莫属 周倩如 女程序员 神一样的选手!
- 2022年上半年全球知名企业十大数据泄露事件
- Docker在Linux下载安装及部署
- i18n(国际化)地域标识码