[ 云盘算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹 ...

数据人与超自然意识  金牌会员 | 2024-6-25 17:00:46 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 905|帖子 905|积分 2715


本文收录于【#云盘算入门与实践 - AWS】专栏中,收录 AWS 入门与实践相干博文。
本文同步于个人公众号:【云盘算洞察
更多关于云盘算技术内容敬请关注:CSDN【#云盘算入门与实践 - AWS】专栏。
本系列已更新博文:


  • [ 云盘算 | AWS 实践 ] Java 应用中使用 Amazon S3 进行存储桶和对象操作完全指南
  • [ 云盘算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [ 云盘算 | AWS 实践 ] 使用 Java 列出存储桶中的所有 AWS S3 对象
  • [ 云盘算 | AWS 实践 ] 使用 Java 更新现有 Amazon S3 对象
  • [ 云盘算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [ 云盘算 | AWS 实践 ] 使用 Java 检查指定的密钥是否存在于给定的 Amazon S3 存储桶中

  
一、概述

在本博文中,我们将探究 如何使用 Java 重命名 Amazon S3 存储桶中的对象(文件或文件夹)。
Amazon Simple Storage Service (Amazon S3)是一种流行的云存储服务。它答应用户在云中存储和检索具有高持久性、可用性和可扩展性的数据。我们将在接下来的章节中使用实用于 Java 的 AWS 开辟工具包与其进行交互。
二、前提条件

要重命名 S3 存储桶中的对象,我们可以利用 AWS SDK for Java 提供的S3Client类。
2.1 设置 Maven 依赖项

首先,我们需要 在项目的pom.xml中声明 AWS S3 SDK 依赖项:
  1. <dependency>
  2.     <groupId>software.amazon.awssdk</groupId>
  3.     <artifactId>s3</artifactId>
  4.     <version>2.20.123</version>
  5. </dependency>
复制代码
2.2 设置 AWS 凭证

我们还需要设置一个 AWS 账户,安装 AWS CLI ,并使用我们的 AWS 凭证(AWS_ACCESS_KEY_ID和AWS_SECERET_ACCESS_KEY)对其进行设置,以便能够以编程方式访问 AWS 资源。我们可以在 AWS 文档中找到完成此操作的所有步调 。
我们使用构建器设计模式创建客户端。这是一个创建设计模式(关于设计模式后续可能会更新博文,这里挖个坑先),它将帮助我们创建这些复杂的对象。在我们的示例中,我们将在US_EAST_1区域创建存储桶。如果我们想要更改我们的首选区域,我们可以在官方文档(点击这里)中找到所有区域。
三、使用复制和删除重命名对象

现在,使用 SDK 重命名对象的唯一方法是复制具有不同名称的对象然后删除原始对象。我们还将在本节中举例分析这一点,解释每个步调。
3.1 复制 S3 对象

在此步调中,我们将使用上一点中创建的客户端来调用 AWS API。
首先,我们将为请求界说参数。假设我们有一个名为baeldung-s3-bucket的存储桶和一个名为simpleCSVFile.csv的 CSV 文件。我们想要将文件重命名为renamedFile.csv。让我们首先概述复制请求的参数:
  1. String bucketName = "baeldung-s3-bucket";
  2. String keyName = "simpleCSVFile.csv";
  3. String destinationKeyName = "renamedFile.csv";
复制代码
界说参数后,我们可以构造将发送到 AWS API 的CopyObjectRequest
  1. CopyObjectRequest copyObjRequest = CopyObjectRequest.builder()
  2.   .sourceBucket(bucketName)
  3.   .sourceKey(keyName)
  4.   .destinationBucket(destinationKeyName)
  5.   .destinationKey(bucketName)
  6.   .build();
复制代码
现在我们可以使用AmazonS3客户端和请求复制对象 :
  1. s3Client.copyObject(copyRequest);
复制代码
如果我们在此停止并运行代码,我们将看到现在有两个文件,一个具有新的所需名称,另一个具有原始名称。
3.2 删除 S3 对象

我们还需要在复制后删除原始对象以完成重命名过程。我们将使用上一点中的参数界说 DeleteObjectRequest
  1. DeleteObjectRequest deleteRequest = DeleteObjectRequest.builder()
  2.   .bucket(bucketName)
  3.   .key(keyName)
  4.   .build();
复制代码
我们将再次调用 S3 客户端来删除原始对象:
  1. s3Client.deleteObject(deleteRequest);
复制代码
四、重命名文件夹

上一点的方法仅实用于重命名简单对象。但是当我们必须重命名文件夹时,环境就会发生一些变化。重命名 Amazon S3 中的整个文件夹涉及迭代该文件夹中的所有对象并单独重命名每个对象
4.1 列出源文件夹中的所有对象

让我们首先列出给定文件夹中的所有对象:
  1. ListObjectsV2Request listRequest = ListObjectsV2Request.builder()
  2.   .bucket(bucketName)
  3.   .prefix(sourceFolderKey)
  4.   .build();
  5. ListObjectsV2Response listResponse = s3Client.listObjectsV2(listRequest);
  6. List<S3Object> objects = listResponse.contents();
复制代码
我们使用存储桶名称和前缀初始化 ListObjectsV2Request 。文件夹中的对象现实上是所有以各自文件夹名称为键前缀的对象。
4.2 重命名文件夹中的所有对象键

现在我们有了列出文件夹中所有对象的代码,我们所要做的就是将它们全部复制到新目标并删除原始对象:
  1. 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);
  2.     // Delete object from source folder    DeleteObjectRequest deleteRequest = DeleteObjectRequest.builder()      .bucket(bucketName)      .key(s3Object.key())      .build();    s3Client.deleteObject(deleteRequest);
  3. }
复制代码
我们首先遍历对象列表,对于每一项,我们将通过用所需的新名称更换文件夹的旧名称来生成一个新密钥。获得新密钥后,我们所要做的就是将对象复制到新目的地并删除原始对象。
文末总结

在本文中,我们探究了使用实用于 Java 的 AWS 开辟工具包重命名 S3 存储桶中的文件和文件夹的方法。我们探索了两种不同的环境,它们使用相同的概念来重命名对象,用新名称复制它们并删除原始名称。盼望对你有所帮助。
  1. [ 本文作者 ]   bluetata
  2. [ 原文链接 ]   https://bluetata.blog.csdn.net/article/details/133980910
  3. [ 最后更新 ]   10/23/2023 2:39
  4. [ 版权声明 ]   如果您在非 CSDN 网站内看到这一行,
  5. 说明网络爬虫可能在本人还没有完整发布的时候就抓走了我的文章,
  6. 可能导致内容不完整,请去上述的原文链接查看原文。
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表