我通过 AWS S3 管理控制台在 S3 中创建了一个层次结构。如果我运行以下代码来列出存储桶:
AmazonS3 s3 = new AmazonS3Client(CRED);
ListObjectsRequest lor = new ListObjectsRequest()
.withBucketName("myBucket")
.withPrefix("code/");
ObjectListing objectListing = s3.listObjects(lor);
for (S3ObjectSummary summary: objectListing.getObjectSummaries()) {
System.out.println(summary.getKey());
}
我得到:
code/
code/03000000-0001-0000-0000-000000000000/
code/03000000-0001-0000-0000-000000000000/special.js
code/03000000-0001-0000-0000-000000000000/test.js
code/03000000-0002-0000-0000-000000000000/
这正是我所期望的。如果我添加一个分隔符,那么我只在“代码/”下直接列出内容,我现在不会得到任何子“目录”。
将上面的行(在末尾添加 withDelimiter() )更改为:
ListObjectsRequest lor = new ListObjectsRequest().withBucketName("myBucket")
.withPrefix("code/")
.withDelimiter("/");
而我现在只得到:
code/
我知道 S3 没有“目录”,而是分隔键,但这种行为似乎很奇怪?我将如何列出仅在“代码”下方的内容?