Listing files in a specific “folder” of a AWS S3 bucket

前端 未结 7 630
耶瑟儿~
耶瑟儿~ 2020-12-24 04:51

I need to list all files contained in a certain folder contained in my S3 bucket.

The folder structure is the following

/my-bucket/users/

        
7条回答
  •  暖寄归人
    2020-12-24 05:05

    While everybody say that there are no directories and files in s3, but only objects (and buckets), which is absolutely true, I would suggest to take advantage of CommonPrefixes, described in this answer. So, you can do following to get list of "folders" (commonPrefixes) and "files" (objectSummaries):

    ListObjectsV2Request req = new ListObjectsV2Request().withBucketName(bucket.getName()).withPrefix(prefix).withDelimiter(DELIMITER);
    ListObjectsV2Result listing = s3Client.listObjectsV2(req);
    for (String commonPrefix : listing.getCommonPrefixes()) {
            System.out.println(commonPrefix);
    }
    for (S3ObjectSummary summary: listing.getObjectSummaries()) {
        System.out.println(summary.getKey());
    }
    

    In your case, for objectSummaries (files) it should return (in case of correct prefix):
    users/user-id/contacts/contact-id/file1.txt
    users/user-id/contacts/contact-id/file2.txt

    for commonPrefixes:
    users/user-id/contacts/contact-id/

提交回复
热议问题