AmazonS3文檔——對象存儲的用法之《對象操作》


即上篇我們說了存儲桶的相關操作后,這節則是重要的如何操作一個對象文件到我們建好的存儲桶中呢?下面開始吧~

1.這里的對象指的是?

Amazon S3 對象表示一個文件 或一個數據集合。每個對象必須駐留在一個存儲桶中。

2.上傳對象

使用 AmazonS3 客戶端的 putObject 方法,並為其提供存儲桶名稱、鍵名稱和要上傳的文件。存儲桶必須存在,否則將出現錯誤。
導入:

import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.AmazonServiceException;
1
2
3
代碼:

//存儲桶的名字
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);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;
1
2
3
4
5
代碼:

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());
}
}
1
2
3
4
5
6
7
8
9
10
11
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;
1
2
3
4
5
6
7
8
9
代碼:

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);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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);
}
}
1
2
3
4
5
6
7
8
9
6.刪除對象

使用 AmazonS3 客戶端的 deleteObject 方法,並向其傳遞要刪除的存儲桶和對象的名稱。指定的存儲桶和對象鍵必須存在,否則將出現錯誤。
導入:

import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.AmazonServiceException;
1
2
3
代碼:

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);
}
}
1
2
3
4
5
6
7
8
9
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;
1
2
3
4
代碼:

/**
*
* @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);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;
1
2
3
4
5
6
代碼:

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);
}
}

 

參考代碼            https://blog.csdn.net/zhanglf02/article/details/78500015
————————————————
版權聲明:本文為CSDN博主「萬米高空」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zhanglf02/article/details/78500015


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM