【发布时间】:2022-10-15 17:54:22
【问题描述】:
所以我想删除所有可能在 s3 文件夹中的对象(基本上带有特定前缀)。
我怎么做?
我目前正在使用这个while (true) 循环,但有人告诉我这不是使用while (true) 的好方法。
这就是我现在正在使用的。
while (true) {
for (S3ObjectSummary objectSummary: objectListing.getObjectSummaries()) {
this.s3Client.deleteObject(bucketName, objectSummary.getKey());
}
if (objectListing.isTruncated()) {
objectListing = s3Client.listNextBatchOfObjects(objectListing);
} else {
break;
}
}
【问题讨论】:
-
在this related question 以及已接受答案中的
while (listing.isTruncated())方法中,另请参阅此newer answer 中的更新方法。 -
您还可以查看 deleteObjects,它可以删除一批对象。
-
告诉我我是否正确? isTruncuated 仅在发送部分响应时才需要,即如果有超过 1000 个对象,对吗?但如果我可以放心,在我的基本前缀中不会有超过 20-30 个对象,我可以简单地删除 while 循环吗?并删除我在一次通话中获得的所有对象列表? @安德鲁詹姆斯。
-
主要问题是关于在 while 循环中检查 isTruncuated() 。 @jarmod。
-
"告诉我我是否正确“ - 我认为您应该能够自己测试。另外,您是否查看了不需要分页的较新答案中的示例?
标签: java amazon-web-services amazon-s3 aws-sdk-java-2.0 aws-s3-client