截至 2024 年 7 月 31 日, AWS SDK for Java 1.x 已進入維護模式,且將於 2025 年 12 月 31 日end-of-support
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對物件執行Amazon S3作業
一個Amazon S3對象表示一個文件或數據的集合。每個物件都必須位於值區內。
注意
這些程式碼範例假設您瞭解使用中的資料,AWS SDK for Java並且已使用設定認AWS證和開發區域中的資訊來設定預設AWS認證。
上傳物件
使用 AmazonS3 客戶端的putObject
方法,提供存儲桶名稱,密鑰名稱和要上傳的文件。儲存貯體必須存在,否則會有錯誤結果。
匯入
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;
Code
System.out.format("Uploading %s to S3 bucket %s...\n", file_path, bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { s3.putObject(bucket_name, key_name, new File(file_path)); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
請參閱(詳見)的完整實例
列出物件
要獲取存儲桶中的對象列表,請使用 AmazonS3 客戶端的listObjects
方法,提供存儲桶的名稱。
此方listObjects
法會傳ObjectListing回提供值區中物件相關資訊的物件。若要列出物件名稱 (key),請使用方getObjectSummaries
法取得 S3 ObjectSummary 物件的清單,每個物件都代表儲存貯體中的單一物件。然後調用其getKey
方法來檢索對象的名稱。
匯入
import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ListObjectsV2Result; import com.amazonaws.services.s3.model.S3ObjectSummary;
Code
System.out.format("Objects in S3 bucket %s:\n", bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); ListObjectsV2Result result = s3.listObjectsV2(bucket_name); List<S3ObjectSummary> objects = result.getObjectSummaries(); for (S3ObjectSummary os : objects) { System.out.println("* " + os.getKey()); }
請參閱(詳見)的完整實例
下載物件
使用 AmazonS3 客戶端的getObject
方法,將要下載的存儲桶和對象的名稱傳遞給它。如果成功,該方法返回一個 S3 對象。指定的儲存貯體和物件金鑰必須存在,否則會有錯誤結果。
您可以透過呼叫getObjectContent
來取得物件的內容S3Object
。這將返回一個 S3 ObjectInputStream,表現為一個標準的 Java InputStream
對象。
下列範例會從 S3 下載物件,並將其內容儲存至檔案 (使用與物件金鑰相同的名稱)。
匯入
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.S3Object; import com.amazonaws.services.s3.model.S3ObjectInputStream; import java.io.File;
Code
System.out.format("Downloading %s from S3 bucket %s...\n", key_name, bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { S3Object o = s3.getObject(bucket_name, key_name); S3ObjectInputStream s3is = o.getObjectContent(); FileOutputStream fos = new FileOutputStream(new File(key_name)); 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); }
請參閱(詳見)的完整實例
複製、移動或重新命名物件
您可以使用儲存貯體複製物件到另一個儲存貯體到另一個儲存貯體到另一個儲存貯體到另一個 copyObject
它會取得要複製來源的值區名稱、要複製的物件,以及目的地值區名稱。
匯入
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions;
Code
try { s3.copyObject(from_bucket, object_key, to_bucket, object_key); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } System.out.println("Done!");
請參閱(詳見)的完整實例
注意
您可以搭copyObject
配 deleteObject 來移動或重新命名物件,方法是先將物件複製到新名稱 (您可以使用與來源和目的地相同的值區),然後從舊位置刪除物件。
刪除物件
使用 AmazonS3 客戶端的deleteObject
方法,將要刪除的存儲桶和對象的名稱傳遞給它。指定的儲存貯體和物件金鑰必須存在,否則會有錯誤結果。
匯入
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions;
Code
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { s3.deleteObject(bucket_name, object_key); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
請參閱(詳見)的完整實例
一次刪除多個物件
使用亞馬遜 S3 客戶端的deleteObjects
方法,您可以通過將多個對象的名稱傳遞給鏈接來刪除同一存儲桶中的多個對象:sdk-for-java/v1/ 引用/COM /Amazonaws/服務/s3/模型/ DeleteObjectsRequest .html 方法。
匯入
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;
Code
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { DeleteObjectsRequest dor = new DeleteObjectsRequest(bucket_name) .withKeys(object_keys); s3.deleteObjects(dor); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
請參閱(詳見)的完整實例