最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、概述

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

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

二、前提條件

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

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

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

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

2.2 配置 AWS 憑證

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

我們使用構(gòu)建器設(shè)計(jì)模式創(chuàng)建客戶(hù)端。這是一個(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ù)制具有不同名稱(chēng)的對(duì)象然后刪除原始對(duì)象。我們還將在本節(jié)中舉例說(shuō)明這一點(diǎn),解釋每個(gè)步驟。

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

在此步驟中,我們將使用上一點(diǎn)中創(chuàng)建的客戶(hù)端來(lái)調(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客戶(hù)端和請(qǐng)求復(fù)制對(duì)象 :

s3Client.copyObject(copyRequest);

如果我們?cè)诖送V共⑦\(yùn)行代碼,我們將看到現(xiàn)在有兩個(gè)文件,一個(gè)具有新的所需名稱(chēng),另一個(gè)具有原始名稱(chēng)。

3.2 刪除 S3 對(duì)象

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

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

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

s3Client.deleteObject(deleteRequest);

四、重命名文件夾

上一點(diǎn)的方法僅適用于重命名簡(jiǎ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ǔ)桶名稱(chēng)和前綴初始化 ListObjectsV2Request 。文件夾中的對(duì)象實(shí)際上是所有以各自文件夾名稱(chēng)為鍵前綴的對(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),我們將通過(guò)用所需的新名稱(chēng)替換文件夾的舊名稱(chēng)來(lái)生成一個(gè)新密鑰。獲得新密鑰后,我們所要做的就是將對(duì)象復(fù)制到新目的地并刪除原始對(duì)象。

文末總結(jié)

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

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

相關(guān)文章

  • Springboot獲取jar包中resources資源目錄下的文件

    Springboot獲取jar包中resources資源目錄下的文件

    今天在項(xiàng)目中遇到一個(gè)業(yè)務(wù)場(chǎng)景,需要用到resources資源目錄下的文件,本文主要介紹了Springboot獲取jar包中resources資源目錄下的文件,感興趣的可以了解一下
    2023-12-12
  • SpringBoot捕獲feign拋出異常的方法

    SpringBoot捕獲feign拋出異常的方法

    使用Springboot時(shí),使用feign客戶(hù)端作為http請(qǐng)求工具時(shí),當(dāng)接口拋出異常信息時(shí),使用全局異常是捕獲不了異常的,本文小編給大家介紹了SpringBoot捕獲feign拋出異常的方法,需要的朋友可以參考下
    2025-04-04
  • Java實(shí)現(xiàn)整數(shù)的逆序輸出的三種方法

    Java實(shí)現(xiàn)整數(shù)的逆序輸出的三種方法

    這篇文章主要介紹了Java實(shí)現(xiàn)整數(shù)的逆序輸出的三種方法,第一種是無(wú)限制整數(shù)的逆序輸出,第二種是非負(fù)整數(shù)的逆序輸出,第三種是非特殊情況的逆序輸出,每種方法給大家講解的非常詳細(xì)需要的朋友可以參考下
    2022-11-11
  • java集合快速構(gòu)建成樹(shù)形json實(shí)例

    java集合快速構(gòu)建成樹(shù)形json實(shí)例

    文章介紹了如何使用Java構(gòu)建樹(shù)形結(jié)構(gòu)的JSON,并實(shí)現(xiàn)了一個(gè)代碼工具來(lái)簡(jiǎn)化這一過(guò)程,該工具使用類(lèi)適配器模式,允許靈活切換樹(shù)形結(jié)構(gòu),且無(wú)需修改實(shí)體類(lèi)代碼,提高了代碼的可維護(hù)性和擴(kuò)展性
    2025-11-11
  • SpringBoot整合Redisson實(shí)現(xiàn)分布式鎖

    SpringBoot整合Redisson實(shí)現(xiàn)分布式鎖

    本文主要介紹了SpringBoot整合Redisson實(shí)現(xiàn)分布式鎖,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Java中instanceof的基本語(yǔ)法與用法詳解

    Java中instanceof的基本語(yǔ)法與用法詳解

    這篇文章主要介紹了Java中instanceof的基本語(yǔ)法與用法的相關(guān)資料,instanceof是Java中用于檢查對(duì)象是否是某個(gè)類(lèi)或接口的實(shí)例的二元運(yùn)算符,需要的朋友可以參考下
    2025-03-03
  • Spring @Transactional工作原理詳解

    Spring @Transactional工作原理詳解

    這篇文章主要介紹了Spring @Transactional工作原理詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 深入理解Java虛擬線(xiàn)程

    深入理解Java虛擬線(xiàn)程

    Java虛擬線(xiàn)程通過(guò)M:N調(diào)度模型解決傳統(tǒng)線(xiàn)程池高并發(fā)瓶頸,顯著降低資源消耗和阻塞代價(jià),提升吞吐量,下面就來(lái)介紹一下Java虛擬線(xiàn)程的使用,感興趣的可以了解一下
    2025-07-07
  • Java并發(fā)編程中的synchronized解析

    Java并發(fā)編程中的synchronized解析

    這篇文章主要介紹了Java并發(fā)編程中的synchronized解析,synchronized是一個(gè)重量級(jí)的鎖,使用不當(dāng)?shù)脑?huà)其實(shí)會(huì)使我們程序執(zhí)行的效率大打折扣,今天我們就對(duì)其進(jìn)行講解,需要的朋友可以參考下
    2023-11-11
  • java實(shí)現(xiàn)excel自定義樣式與字段導(dǎo)出詳細(xì)圖文教程

    java實(shí)現(xiàn)excel自定義樣式與字段導(dǎo)出詳細(xì)圖文教程

    最近接到一個(gè)需求,客戶(hù)不滿(mǎn)意原本導(dǎo)出的csv文件,想要導(dǎo)出Excel文件,下面這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)excel自定義樣式與字段導(dǎo)出詳細(xì)圖文教程
    2023-09-09

最新評(píng)論

青神县| 阿图什市| 锡林浩特市| 安阳市| 亳州市| 兴宁市| 和田县| 宁强县| 育儿| 兴国县| 南投市| 静宁县| 搜索| 安塞县| 南江县| 株洲市| 甘南县| 建水县| 连城县| 阿鲁科尔沁旗| 城步| 洪江市| 兰西县| 洪江市| 叙永县| 南岸区| 阿巴嘎旗| 云和县| 简阳市| 湖南省| 富宁县| 甘洛县| 马边| 富民县| 南召县| 九寨沟县| 泸州市| 会昌县| 客服| 平江县| 浠水县|