Delete a folder and its content AWS S3 java

There is no such thing as folders in S3. There are simply files (objects) with slashes in the filenames (keys).

The S3 browser console will visualize these slashes as folders, but they're not real.

You can delete all files with the same prefix, but first you need to look them up with list_objects(), then you can batch delete them.

For code snippet using Java SDK, please refer to Deleting multiple objects.


You can specify keyPrefix in ListObjectsRequest.

For example, consider a bucket that contains the following keys:

  • foo/bar/baz
  • foo/bar/bash
  • foo/bar/bang
  • foo/boo

And you want to delete files from 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;
            }
        }
    }

https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/ListObjectsRequest.html