我需要知道S3
存储桶下存储的文件数量。目前,ObjectListing
没有count
或numberOfObject
等方法。
但是,它有一个返回S3ObjectSummary
列表的方法。
public java.util.List<S3ObjectSummary> getObjectSummaries()
由于它是List
,我可以调用size()
方法,但是假设getObjectSummaries()
List的大小与存储的对象数相同是正确的吗?在桶下?
答案 0 :(得分:1)
否 - 更准确地说,getObjectSummaries()
的大小是您收到的listObjects()
结果页面中的对象数量。否则,是 - 列表中的每个对象摘要都应对应于S3对象是正确的。
AWS将大型结果集的结果分页到每页1,000个结果。在一般情况下,您需要多次拨打此电话:
如果isTruncated()为真,请致电getNextMarker()以获取下一个要在listObjects()的ListObjectsRequest中使用的标记。
如果为false,您获得的最后一个响应将是您需要处理的最后一个响应。此时您可以完成对象的计数。
考虑到这一点,这对于非常大的存储桶来说不是一个很好的解决方案,因为你必须枚举整个存储桶。这是an alternative solution使用s3cmd您可以从Java调用的。{/ p>