欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java怎么重命名?Amazon?S3?中的文件和文件夾

 更新時(shí)間:2023年10月24日 10:52:13   作者:bluetata  
在本文中,我們探討了使用適用于 Java 的 AWS 開發(fā)工具包重命名 S3 存儲(chǔ)桶中的文件和文件夾的方法,我們探索了兩種不同的情況,它們使用相同的概念來重命名對(duì)象,用新名稱復(fù)制它們并刪除原始名稱

一、概述

在本博文中,我們將探討 如何使用 Java 重命名 Amazon S3 存儲(chǔ)桶中的對(duì)象(文件或文件夾)。

Amazon Simple Storage Service (Amazon S3)是一種流行的云存儲(chǔ)服務(wù)。它允許用戶在云中存儲(chǔ)和檢索具有高持久性、可用性和可擴(kuò)展性的數(shù)據(jù)。我們將在接下來的章節(jié)中使用適用于 Java 的 AWS 開發(fā)工具包與其進(jìn)行交互。

二、前提條件

要重命名 S3 存儲(chǔ)桶中的對(duì)象,我們可以利用 AWS SDK for Java 提供的S3Client類。

2.1 配置 Maven 依賴項(xiàng)

首先,我們需要 在項(xiàng)目的pom.xml中聲明 AWS S3 SDK 依賴項(xiàng):

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>s3</artifactId>
    <version>2.20.123</version>
</dependency>

2.2 配置 AWS 憑證

我們還需要設(shè)置一個(gè) AWS 賬戶,安裝 AWS CLI ,并使用我們的 AWS 憑證(AWS_ACCESS_KEY_IDAWS_SECERET_ACCESS_KEY)對(duì)其進(jìn)行配置,以便能夠以編程方式訪問 AWS 資源。我們可以在 AWS 文檔中找到完成此操作的所有步驟 。

我們使用構(gòu)建器設(shè)計(jì)模式創(chuàng)建客戶端。這是一個(gè)創(chuàng)建設(shè)計(jì)模式(關(guān)于設(shè)計(jì)模式后續(xù)可能會(huì)更新博文,這里挖個(gè)坑先),它將幫助我們創(chuàng)建這些復(fù)雜的對(duì)象。在我們的示例中,我們將在US_EAST_1區(qū)域創(chuàng)建存儲(chǔ)桶。如果我們想要更改我們的首選區(qū)域,我們可以在官方文檔(點(diǎn)擊這里)中找到所有區(qū)域。

三、使用復(fù)制和刪除重命名對(duì)象

目前,使用 SDK 重命名對(duì)象的唯一方法是復(fù)制具有不同名稱的對(duì)象然后刪除原始對(duì)象。我們還將在本節(jié)中舉例說明這一點(diǎn),解釋每個(gè)步驟。

3.1 復(fù)制 S3 對(duì)象

在此步驟中,我們將使用上一點(diǎn)中創(chuàng)建的客戶端來調(diào)用 AWS API。

首先,我們將為請(qǐng)求定義參數(shù)。假設(shè)我們有一個(gè)名為baeldung-s3-bucket的存儲(chǔ)桶和一個(gè)名為simpleCSVFile.csv的 CSV 文件。我們想要將文件重命名為renamedFile.csv。讓我們首先概述復(fù)制請(qǐng)求的參數(shù):

String bucketName = "baeldung-s3-bucket";
String keyName = "simpleCSVFile.csv";
String destinationKeyName = "renamedFile.csv";

定義參數(shù)后,我們可以構(gòu)造將發(fā)送到 AWS API 的CopyObjectRequest

CopyObjectRequest copyObjRequest = CopyObjectRequest.builder()
  .sourceBucket(bucketName)
  .sourceKey(keyName)
  .destinationBucket(destinationKeyName)
  .destinationKey(bucketName)
  .build();

現(xiàn)在我們可以使用AmazonS3客戶端和請(qǐng)求復(fù)制對(duì)象 :

s3Client.copyObject(copyRequest);

如果我們在此停止并運(yùn)行代碼,我們將看到現(xiàn)在有兩個(gè)文件,一個(gè)具有新的所需名稱,另一個(gè)具有原始名稱。

3.2 刪除 S3 對(duì)象

我們還需要在復(fù)制后刪除原始對(duì)象以完成重命名過程。我們將使用上一點(diǎn)中的參數(shù)定義 DeleteObjectRequest

DeleteObjectRequest deleteRequest = DeleteObjectRequest.builder()
  .bucket(bucketName)
  .key(keyName)
  .build();

我們將再次調(diào)用 S3 客戶端來刪除原始對(duì)象:

s3Client.deleteObject(deleteRequest);

四、重命名文件夾

上一點(diǎn)的方法僅適用于重命名簡單對(duì)象。但是當(dāng)我們必須重命名文件夾時(shí),情況就會(huì)發(fā)生一些變化。重命名 Amazon S3 中的整個(gè)文件夾涉及迭代該文件夾中的所有對(duì)象并單獨(dú)重命名每個(gè)對(duì)象。

4.1 列出源文件夾中的所有對(duì)象

讓我們首先列出給定文件夾中的所有對(duì)象:

ListObjectsV2Request listRequest = ListObjectsV2Request.builder()
  .bucket(bucketName)
  .prefix(sourceFolderKey)
  .build();

ListObjectsV2Response listResponse = s3Client.listObjectsV2(listRequest);
List<S3Object> objects = listResponse.contents();

我們使用存儲(chǔ)桶名稱和前綴初始化 ListObjectsV2Request 。文件夾中的對(duì)象實(shí)際上是所有以各自文件夾名稱為鍵前綴的對(duì)象。

4.2 重命名文件夾中的所有對(duì)象鍵

現(xiàn)在我們有了列出文件夾中所有對(duì)象的代碼,我們所要做的就是將它們?nèi)繌?fù)制到新目標(biāo)并刪除原始對(duì)象:

for (S3Object s3Object : objects) {
    String newKey = destinationFolderKey + s3Object.key().substring(sourceFolderKey.length());

    // Copy object to destination folder
    CopyObjectRequest copyRequest = CopyObjectRequest.builder()
      .sourceBucket(bucketName)
      .sourceKey(s3Object.key())
      .destinationBucket(bucketName)
      .destinationKey(newKey)
      .build();
    s3Client.copyObject(copyRequest);

    // Delete object from source folder
    DeleteObjectRequest deleteRequest = DeleteObjectRequest.builder()
      .bucket(bucketName)
      .key(s3Object.key())
      .build();
    s3Client.deleteObject(deleteRequest);
}

我們首先遍歷對(duì)象列表,對(duì)于每一項(xiàng),我們將通過用所需的新名稱替換文件夾的舊名稱來生成一個(gè)新密鑰。獲得新密鑰后,我們所要做的就是將對(duì)象復(fù)制到新目的地并刪除原始對(duì)象。

文末總結(jié)

在本文中,我們探討了使用適用于 Java 的 AWS 開發(fā)工具包重命名 S3 存儲(chǔ)桶中的文件和文件夾的方法。我們探索了兩種不同的情況,它們使用相同的概念來重命名對(duì)象,用新名稱復(fù)制它們并刪除原始名稱。希望對(duì)你有所幫助。

到此這篇關(guān)于Java重命名 Amazon S3 中的文件和文件夾的文章就介紹到這了,更多相關(guān)java 重命名 Amazon S3內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java文件處理之使用XWPFDocument導(dǎo)出Word文檔

    Java文件處理之使用XWPFDocument導(dǎo)出Word文檔

    最近因項(xiàng)目開發(fā)的需要,整理了一份用JAVA導(dǎo)出WORD文檔,下面這篇文章主要給大家介紹了關(guān)于Java文件處理之使用XWPFDocument導(dǎo)出Word文檔的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • 解決MyEclipse中的Building workspace問題的三個(gè)方法

    解決MyEclipse中的Building workspace問題的三個(gè)方法

    這篇文章主要介紹了解決MyEclipse中的Building workspace問題的三個(gè)方法,需要的朋友可以參考下
    2015-11-11
  • java 中死鎖問題的實(shí)例詳解

    java 中死鎖問題的實(shí)例詳解

    這篇文章主要介紹了java 中死鎖問題的實(shí)例詳解的相關(guān)資料,希望通過本文大家能夠理解掌握死鎖的問題,需要的朋友可以參考下
    2017-09-09
  • RocketMQ?NameServer架構(gòu)設(shè)計(jì)啟動(dòng)流程

    RocketMQ?NameServer架構(gòu)設(shè)計(jì)啟動(dòng)流程

    這篇文章主要為大家介紹了RocketMQ?NameServer架構(gòu)設(shè)計(jì)啟動(dòng)流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • java實(shí)現(xiàn)音頻文件播放功能

    java實(shí)現(xiàn)音頻文件播放功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)音頻文件播放功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Maven基礎(chǔ)之如何修改本地倉庫的默認(rèn)路徑

    Maven基礎(chǔ)之如何修改本地倉庫的默認(rèn)路徑

    這篇文章主要介紹了Maven基礎(chǔ)之如何修改本地倉庫的默認(rèn)路徑問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • idea.vmoptions 最佳配置方案

    idea.vmoptions 最佳配置方案

    本文介紹了針對(duì)IntelliJ IDEA的優(yōu)化配置建議,包括提升內(nèi)存設(shè)置、啟用G1垃圾回收器、優(yōu)化垃圾回收策略以及調(diào)整網(wǎng)絡(luò)設(shè)置等,旨在提高IDE的性能和響應(yīng)速度,同時(shí),指導(dǎo)用戶如何修改vmoptions文件以應(yīng)用這些配置,并提供了監(jiān)控內(nèi)存使用和插件管理的建議
    2024-09-09
  • SpringBoot如何實(shí)現(xiàn)一個(gè)實(shí)時(shí)更新的進(jìn)度條的示例代碼

    SpringBoot如何實(shí)現(xiàn)一個(gè)實(shí)時(shí)更新的進(jìn)度條的示例代碼

    本文詳細(xì)的介紹了SpringBoot如何實(shí)現(xiàn)一個(gè)實(shí)時(shí)更新的進(jìn)度條,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Spring JPA之save方法示例詳解

    Spring JPA之save方法示例詳解

    這篇文章主要為大家介紹了Spring JPA之save方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Java基礎(chǔ)教程_判斷語句if else

    Java基礎(chǔ)教程_判斷語句if else

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)教程_判斷語句if else。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06

最新評(píng)論