为了它的价值,Amazon S3库正用于在HCP上执行操作。也许这限制了我们可以使用的Amazon S3版本或更改文件夹的解释。我的理解是,Amazon S3和HCP都可以将完整路径确认为对象并忽略文件夹,但是我很难得到我的请求。
说我有:
我希望每个对象都在/。这是我的请求尝试:
ListObjectsRequest listSomeObjects= new ListObjectsRequest()
.withBucketName("bucket")
.withDelimiter("/")
.withPrefix("something/")
.withMaxKeys("100") // maybe not necessary since it stops at 1000
.withMarker(null); // to be used after first request, I imagine
ObjectListing objectsReturned = this.hs3Client.listObjects(listSomeObjects);
objectsReturned给了我一些选择:
我只需要一个完整对象名称的列表:something / over / here / object1,something / over / there / object2
循环遍历所有getObjectSummaries()以过滤结果将是最后的手段。使用大量的小请求来考虑子文件夹可能甚至不适用于我们的用例。有没有办法获得具有公共前缀的完整对象名称列表,而无需通过getObjectSummaries()中的所有键?
答案 0 :(得分:0)
您使用的是哪个亚马逊图书馆版本?
我可以告诉你,我一直在使用
AmazonS3.listObjects(String bucketName, String prefix)
我只收到了现有匹配键的列表。只有实际的对象,而不是“虚拟文件夹”子路径(使用getObjectSummaries方法)
据我所知,这相当于你的代码,但是没有分隔符(保留maxkeys)。
我使用的是版本1.10.52,以防它重要(会很惊讶)。
答案 1 :(得分:0)
删除.withDelimiter("/")
选项可以获得前缀