删除 Amazon S3 Java 中的文件、目录和存储桶是一个常见的任务。以下是一个完整的答案,涵盖了所有相关的知识点:
文件
在 Amazon S3 中,文件被称为对象。要删除一个对象,您可以使用 AmazonS3
客户端的 deleteObject
方法。以下是一个示例代码:
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.DeleteObjectRequest;
public class DeleteObject {
public static void main(String[] args) {
String bucketName = "my-bucket";
String key = "path/to/my/object.txt";
AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
s3Client.deleteObject(new DeleteObjectRequest(bucketName, key));
}
}
目录
Amazon S3 没有真正的目录结构,但是可以通过对象键的前缀来模拟目录结构。要删除一个目录,您需要删除所有具有该目录前缀的对象。以下是一个示例代码:
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;
public class DeleteDirectory {
public static void main(String[] args) {
String bucketName = "my-bucket";
String prefix = "path/to/my/directory/";
AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
ObjectListing objectListing = s3Client.listObjects(new ListObjectsRequest()
.withBucketName(bucketName)
.withPrefix(prefix));
for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {
s3Client.deleteObject(bucketName, objectSummary.getKey());
}
}
}
存储桶
要删除一个存储桶,您需要先删除存储桶中的所有对象,然后使用 AmazonS3
客户端的 deleteBucket
方法。以下是一个示例代码:
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.DeleteObjectRequest;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;
public class DeleteBucket {
public static void main(String[] args) {
String bucketName = "my-bucket";
AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
ObjectListing objectListing = s3Client.listObjects(new ListObjectsRequest()
.withBucketName(bucketName));
for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {
s3Client.deleteObject(bucketName, objectSummary.getKey());
}
s3Client.deleteBucket(bucketName);
}
}
请注意,以上示例代码仅适用于较小的存储桶,因为它们只列出了存储桶中的所有对象。对于大型存储桶,您需要使用分页器来处理对象列表。
领取专属 10元无门槛券
手把手带您无忧上云