【发布时间】:2013-07-07 20:08:31
【问题描述】:
我通过 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/
这正是我所期望的。如果我添加一个分隔符,那么我只在“code/”下直接列出内容,我现在不会得到任何子“目录”。
将上面的行(在末尾添加 withDelimiter())更改为:
ListObjectsRequest lor = new ListObjectsRequest().withBucketName("myBucket")
.withPrefix("code/")
.withDelimiter("/");
而我现在只得到:
code/
我知道 S3 没有“目录”,而是分隔键,但这种行为似乎很奇怪?我如何列出仅在“代码”下方的内容?
【问题讨论】:
-
你试过
withPrefix("code")(省略斜线) -
是的,这让我一无所获。根据 AWS doco,您需要将尾随分隔符附加到前缀。
标签: java amazon-web-services amazon-s3