删除文件夹及其内容 AWS S3 java
2022-09-03 09:03:57
是否可以使用适用于 aws 的 java 开发工具包,通过单个 api 请求删除文件夹(在 S3 存储桶中)及其所有内容。对于浏览器控制台,我们只需单击一下即可删除和文件夹及其内容,我希望使用API也应该提供相同的行为。
是否可以使用适用于 aws 的 java 开发工具包,通过单个 api 请求删除文件夹(在 S3 存储桶中)及其所有内容。对于浏览器控制台,我们只需单击一下即可删除和文件夹及其内容,我希望使用API也应该提供相同的行为。
S3 中没有文件夹这样的东西。只有文件(对象)在文件名(键)中带有斜杠。
S3 浏览器控制台会将这些斜杠可视化为文件夹,但它们不是真实的。
您可以删除具有相同前缀的所有文件,但首先需要使用list_objects()查找它们,然后才能批量删除它们。
有关使用 Java SDK 的代码片段,请参阅删除多个对象。
您可以在 ListObjectsRequest 中指定 keyPrefix。
例如,考虑一个包含以下键的存储桶:
并且您想要从foo / bar / baz中删除文件。
if (s3Client.doesBucketExist(bucketName)) {
ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
.withBucketName(bucketName)
.withPrefix("foo/bar/baz");
ObjectListing objectListing = s3Client.listObjects(listObjectsRequest);
while (true) {
for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {
s3Client.deleteObject(bucketName, objectSummary.getKey());
}
if (objectListing.isTruncated()) {
objectListing = s3Client.listNextBatchOfObjects(objectListing);
} else {
break;
}
}
}