AmazonS3文档——对象存储的用法之《对象操作》
即上篇我们说了存储桶的相关操作后,这节则是重要的如何操作一个对象文件到我们建好的存储桶中呢?下面开始吧~
1.这里的对象指的是?
Amazon S3 对象表示一个文件 或一个数据集合。每个对象必须驻留在一个存储桶中。
2.上传对象
使用 AmazonS3 客户端的 putObject 方法,并为其提供存储桶名称、键名称和要上传的文件。存储桶必须存在,否则将出现错误。
导入:
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.AmazonServiceException;
代码:
//存储桶的名字private String bucket_name="beijing";//自定义上传到bucket后的目录结构private String key_name="beijing/haidingqu/xierqi/yuanzougaofei.mp3";//本地文件路径private String file_path="E:/music/china/yuanzougaofei.mp3";/*** 上传文件到指定的bucket中。* 注意点:这里的本地路径的文件必须存在才行,不然文件不存在回异常。*/public void uploadObj(){final AmazonS3 s3 = new AmazonS3Client();try {s3.putObject(bucket_name, key_name, file_path);} catch (AmazonServiceException e) {System.err.println(e.getErrorMessage());System.exit(1);}}
3.列出所有bucket中的对象
要获取存储桶中的对象列表,我们使用 AmazonS3 客户端的 listObjects 方法,并为其提供存储桶名称。
listObjects 方法返回一个 ObjectListing 对象,该对象提供有关存储桶中对象的信息。要列出对象名称 (键),可使用 getObjectSummaries 方法获取 S3ObjectSummary 对象的列表,其中每个对象均表示存储桶中的一个对象,然后调用其 getKey 方法以检索对象名称。
导入:
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import java.util.List;
代码:
public void showListObjFromBucket(String bucketName){final AmazonS3 s3 = new AmazonS3Client();ObjectListing ol = s3.listObjects(bucketName);List<S3ObjectSummary> objects = ol.getObjectSummaries();for (S3ObjectSummary os: objects) {System.out.println("* " + os.getKey());}}
4.下载对象
使用 AmazonS3 客户端的 getObject 方法,并向其传递要下载的存储桶和对象的名称。如果成功,此方法将返回一个 S3Object。指定的存储桶和对象键必须存在,否则将出现错误。
您可以通过对 S3Object 调用 getObjectContent 来获取对象的内容。这将返回一个 S3ObjectInputStream,其行为与标准 Java InputStream 对象的相同。
以下示例从 S3 下载一个对象,然后将该对象的内容保存到一个文件(路径为file_path)
导入:
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.S3Object;
import com.amazonaws.services.s3.model.S3ObjectInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
代码:
public void downloadObjByKey(String buketName,String key){final AmazonS3 s3 = new AmazonS3Client();try {S3Object o = s3.getObject(buketName, key);S3ObjectInputStream s3is = o.getObjectContent();//下载到指定路径file_path下FileOutputStream fos = new FileOutputStream(new File(file_path));byte[] read_buf = new byte[1024];int read_len = 0;while ((read_len = s3is.read(read_buf)) > 0) {fos.write(read_buf, 0, read_len);}s3is.close();fos.close();} catch (AmazonServiceException e) {System.err.println(e.getErrorMessage());System.exit(1);} catch (FileNotFoundException e) {System.err.println(e.getMessage());System.exit(1);} catch (IOException e) {System.err.println(e.getMessage());System.exit(1);}}
5.复制、移动或重命名对象
您可以使用 AmazonS3 客户端的 copyObject 方法将对象从一个存储桶复制到另一个存储桶。它采用要从中复制的存储桶的名称、要复制的对象以及目标存储桶和名称。
导入:
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.AmazonServiceException;
代码:
public void moveOrCopyObj(String from_bucket,String object_key,String to_bucket,String object_ke){final AmazonS3 s3 = new AmazonS3Client();try {s3.copyObject(from_bucket, object_key, to_bucket, object_key);} catch (AmazonServiceException e) {System.err.println(e.getErrorMessage());System.exit(1);}}
6.删除对象
使用 AmazonS3 客户端的 deleteObject 方法,并向其传递要删除的存储桶和对象的名称。指定的存储桶和对象键必须存在,否则将出现错误。
导入:
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.AmazonServiceException;
代码:
public void deleteObject(String bucket_name, String object_key) {final AmazonS3 s3 = new AmazonS3Client();try {s3.deleteObject(bucket_name, object_key);} catch (AmazonServiceException e) {System.err.println(e.getErrorMessage());System.exit(1);}}
7.一次性删除指定多个对象
利用 AmazonS3 客户端的 deleteObjects 方法,您可以从同一存储桶中删除多个对象,方式是将这些对象的名称传递到 DeleteObjectRequest withKeys 方法。
导入:
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.DeleteObjectsRequest;
代码:
/**
* * @param bucket_name* @param object_keys 要删除的obj所在的目录集合*/
public void deleteObjects(String bucket_name,String[] object_keys){final AmazonS3 s3 = new AmazonS3Client();try {DeleteObjectsRequest dor = new DeleteObjectsRequest(bucket_name).withKeys(object_keys);s3.deleteObjects(dor);} catch (AmazonServiceException e) {System.err.println(e.getErrorMessage());System.exit(1);}}
8.删除bucket下的所有文件
利用 AmazonS3 客户端的 deleteObject 方法,您可以从同一存储桶中删除所有对象,方式是通过查询全部文件,并在遍历里面将这些对象key传递到 deleteObject方法。
导入:
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import java.util.List;
代码:
public void deleteAllObjects(String bucketName) {final AmazonS3 s3 = new AmazonS3Client();ObjectListing ol = s3.listObjects(bucketName);List<S3ObjectSummary> objects = ol.getObjectSummaries();for (S3ObjectSummary os : objects) {String key = os.getKey();s3.deleteObject(bucketName, key);}}
AmazonS3文档——对象存储的用法之《对象操作》相关推荐
- 更改WPS云文档数据存储位置
WPS的默认位置在C盘,当我们文档数据比较多,文件的体积也越来越大时,就会占用C盘的存储空间 下面为更改WPS云文档数据存储位置的具体步骤 双击"WPS网盘",进入WPS网盘界面 ...
- JavaScript内置对象(内置对象、查文档(MDN)、Math对象、日期对象、数组对象、字符串对象)
目录 JavaScript内置对象 内置对象 查文档 MDN Math对象 Math概述 案例一:封装自己的对象 随机数方法 random() 案例一:猜数字游戏 日期对象 Date 概述 Date( ...
- icloud文档本地存储_如何在iCloud存储上省钱
icloud文档本地存储 The situation with iCloud storage would be funny if it wasn't so ridiculous, and we've ...
- JavaEE之使用DOM4J和XPath对xml文档的添加,删除,查询操作
程序运行结果如下图: XML文档如下: <?xml version="1.0" encoding="UTF-8"?><exam> < ...
- 服务器资源评估文档,服务器存储资源评估
服务器存储资源评估 内容精选 换一换 可以通过各种筛选条件在存储库列表查看存储库详情.存储库已创建.登录管理控制台.单击管理控制台左上角的,选择区域和项目.选择"存储 > 云备份&qu ...
- indesign2019怎么存低版本_高版本的InDesign文档怎样存储为早期版本
有时候,我们需要用 InDesign CS4 或更低版本打开 InDesign CS5 或InDesign CS5.5的文档,怎么做呢?首先,你必须要有InDesign CS5 或InDesign C ...
- word 文档中嵌入和链接OLE 对象|Packager-对象包装程序
Packager-对象包装程序1 ㈠."对象包装程序"概述 "对象包装程序"是一种用于创建可以插入到某个文档中的程序包的工具. "对象包装程序&quo ...
- WORD文档结构图的一些用法
现在可能不少同学正忙着写毕业论文,而对论文提纲的撰写以及论文书写格式的编排则是一个很重要的部分,利用WORD文档结构图可以同时完成这两步工作,方便快捷. 一.文档结构图的总体结构和作用 我用的是 ...
- 对象存储HTML自定义属性,设置对象属性_对象存储服务 OBS_SDK参考_Node.js_上传对象_华为云...
开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助.接口参考文档详细介绍了每个接口的参数和使用方法. 您可以在上传对象时设置对象属性.对象属性包含对象长 ...
- Linux之文档与目录结构 目录的相关操作 Linux的文件系统
Linux之文档与目录结构 Linux文件系统结构 Linux目录结构的组织形式和Windows有很大的不同.首先Linux没有"盘(C盘.D盘.E盘)"的概念.已经建立文件系统的 ...
最新文章
- Python实现线程池
- 三步骤定位Windows崩溃进程
- SAP Cloud for Customer Extensibility的设计与实现
- java开发环境安装原理,java开发环境搭建 java开发环境的完整搭建过程
- 代码调用NullPointerException(NPE)
- 查询分析器下如何备份数据库
- mybatis在指定库建表_使用MyBatis Plus自动添加数据库表中的创建时间、创建者、更新时间、更新者...
- 阿里云centos镜像地址以及个发行版本说明
- Java中集合List,Map和Set的差别
- 麦咖啡将投资25亿在中国内地布局超过4000家;星巴克中国咖啡创新产业园正式动工 | 美通企业日报...
- 消费评价网 | 线上保险消费调查报告 虚假宣传多 捆绑销售坑人
- WPF Grid绘制网格线
- 【无人机航测实习简明教程】1 无人机航测常见名词术语解释
- 工作一年了,小贺和大家说说心里话
- 浏览器缩放时,页面布局发生变化
- 浅显的谈谈证券公司的信息化
- Nancy启用跨站攻击防护(CSRF)
- mysql中depart_MySQL基础语法
- jQuery05(插件)
- 近代物理实验 液晶电光效应 (含数据和参考题)