我在AWS 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/
这正是我所期望的。然而,如果我添加一个分隔符,以便仅列出“code/”下直接的内容,则现在不会返回任何子“目录”。
将上面的行更改(在结尾处添加withDelimiter()):
ListObjectsRequest lor = new ListObjectsRequest().withBucketName("myBucket")
.withPrefix("code/")
.withDelimiter("/");
现在我只得到:
code/
我知道S3没有"目录",而是使用分隔符键,但这种行为似乎很奇怪?如果我想列出仅在"code"下面的内容,应该怎么做?
withPrefix("code")
吗?(省略斜杠) - Thilo