AmazonS3文档——对象存储的用法之《对象操作》
来源:互联网 发布:高端化妆品知乎 编辑:程序博客网 时间:2024/06/18 11:35
即上篇我们说了存储桶的相关操作后,这节则是重要的如何操作一个对象文件到我们建好的存储桶中呢?下面开始吧~
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文档——对象存储的用法之《对象操作》
- AmazonS3文档——对象存储的用法之《存储桶操作》
- java开发AmazonS3对象存储的工具类
- jQuery文档对象的操作
- jQuery文档对象的操作
- 增加JavaScript性能之优化文档对象的操作
- OC文档之——管理对象间的关系
- html5之本地存储—JSON对象的使用
- 面向对象的javascript之对象操作
- 拖放操作之——dataTransfer对象
- JS学习总结之操作文档对象模型
- C++回顾之static用法总结、对象的存储,作用域与生存期
- C++回顾之static用法总结、对象的存储,作用域与生存期
- java操作redis存储对象
- 线程事件对象之CreateEvent的用法
- java之匿名对象的用法
- 结构化存储-复合文档-永久对象
- Python入门的36个例子 之 28 -> Pickle —— 利用文件存储对象
- ExpressRoute 线路预配工作流和线路状态
- 欢迎使用CSDN-markdown编辑器
- github&git
- Java中 Null & " " 的概念,与区别
- Hive分桶
- AmazonS3文档——对象存储的用法之《对象操作》
- MyEclipse安装android环境碰到的错误集锦
- CentOS6下tmux安装和使用
- Android6.0以上获取前台进程的方法
- FCC算法:九、截断字符串--Truncate a string
- JSTL、EL、ONGL、Struts标签的区别与使用
- apt-get指令的autoclean,clean,autoremove的区别
- 欢迎使用CSDN-markdown编辑器
- OSIntEnter() 与 OSIntExit()