论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
虚拟化.超融合.云计算
›
公有云
›
[ 云盘算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的 ...
[ 云盘算 | 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
依赖项:
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
<version>2.20.123</version>
</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。让我们首先概述复制请求的参数:
String bucketName = "baeldung-s3-bucket";
String keyName = "simpleCSVFile.csv";
String destinationKeyName = "renamedFile.csv";
复制代码
界说参数后,我们
可以构造将发送到 AWS API 的
CopyObjectRequest
:
CopyObjectRequest copyObjRequest = CopyObjectRequest.builder()
.sourceBucket(bucketName)
.sourceKey(keyName)
.destinationBucket(destinationKeyName)
.destinationKey(bucketName)
.build();
复制代码
现在我们可以使用AmazonS3客户端和请求复制对象 :
s3Client.copyObject(copyRequest);
复制代码
如果我们在此停止并运行代码,我们将看到现在有两个文件,一个具有新的所需名称,另一个具有原始名称。
3.2 删除 S3 对象
我们还需要在复制后删除原始对象以完成重命名过程。我们将使用上一点中的参数界说
DeleteObjectRequest
:
DeleteObjectRequest deleteRequest = DeleteObjectRequest.builder()
.bucket(bucketName)
.key(keyName)
.build();
复制代码
我们将再次调用 S3 客户端来删除原始对象:
s3Client.deleteObject(deleteRequest);
复制代码
四、重命名文件夹
上一点的方法仅实用于重命名简单对象。但是当我们必须重命名文件夹时,环境就会发生一些变化。
重命名 Amazon S3 中的整个文件夹涉及迭代该文件夹中的所有对象并单独重命名每个对象
。
4.1 列出源文件夹中的所有对象
让我们首先列出给定文件夹中的所有对象:
ListObjectsV2Request listRequest = ListObjectsV2Request.builder()
.bucket(bucketName)
.prefix(sourceFolderKey)
.build();
ListObjectsV2Response listResponse = s3Client.listObjectsV2(listRequest);
List<S3Object> objects = listResponse.contents();
复制代码
我们使用存储桶名称和前缀初始化
ListObjectsV2Request
。文件夹中的对象现实上是所有以各自文件夹名称为键前缀的对象。
4.2 重命名文件夹中的所有对象键
现在我们有了列出文件夹中所有对象的代码,我们所要做的就是将它们全部复制到新目标并删除原始对象:
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);
}
复制代码
我们首先遍历对象列表,对于每一项,我们将通过用所需的新名称更换文件夹的旧名称来生成一个新密钥。获得新密钥后,我们所要做的就是将对象复制到新目的地并删除原始对象。
文末总结
在本文中,我们探究了使用实用于 Java 的 AWS 开辟工具包重命名 S3 存储桶中的文件和文件夹的方法。我们探索了两种不同的环境,它们使用相同的概念来重命名对象,用新名称复制它们并删除原始名称。盼望对你有所帮助。
[ 本文作者 ] bluetata
[ 原文链接 ] https://bluetata.blog.csdn.net/article/details/133980910
[ 最后更新 ] 10/23/2023 2:39
[ 版权声明 ] 如果您在非 CSDN 网站内看到这一行,
说明网络爬虫可能在本人还没有完整发布的时候就抓走了我的文章,
可能导致内容不完整,请去上述的原文链接查看原文。
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
数据人与超自然意识
金牌会员
这个人很懒什么都没写!
楼主热帖
4. 事务和锁
kubernetes使用学习(k8s)
【记录】Python爬虫|爬取空间PC版日志 ...
OSPF多区域
渗透测试02
2023团队天梯模拟赛 L2-3 智能护理中心 ...
Java Long类的bitCount()方法具有什么 ...
循序渐进介绍基于CommunityToolkit.Mvv ...
那些年你用过最好的键盘
【 安信可海思Hi-12F模组】AT指令入门 ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表