给定一个AWSS3Client,如何获得所有S3对象路径的完整列表?
示例:
Bucket名称:foo有5个对象
- foo/bip/baz
- foo/bip/bap
- foo/bar/1
- foo/bar/2
- foo/1234
我想要一份由这5项组成的List[String]
。
我该怎么做?
要做到这一点,您可以调用
listObjects(bucketName).getObjectSummaries()
在AmazonS3Client
对象上,然后迭代该对象摘要列表,对每个摘要调用getKey()
。
(listObjects()
方法返回一个ObjectListing
,而getObjectSummaries()
方法又返回一个List<S3ObjectSummary>
-并且每个S3ObjectSummary
都包含密钥!)
如果有很多对象,您还必须处理ObjectListing
被截断的情况,例如使用listNextBatchOfObjects()
。另请参见ObjectListing.isTruncated()
(javadoc)。
最后,只需为每个键预先添加bucketName+ "/"
即可。