getObjectSummaries 会获取存储在 S3 存储桶中的对象的数量吗?
Will getObjectSummaries get the count of objects stored in a S3 Bucket?
我需要知道 S3
存储桶中存储的文件数量。目前,ObjectListing
没有 count
或 numberOfObject
.
等方法
但是,它有一个方法可以 return 一个 S3ObjectSummary
的列表。
public java.util.List<S3ObjectSummary> getObjectSummaries()
因为它是一个 List
,我可以调用 size()
方法但是假设 getObjectSummaries()
列表的大小与存储在桶下?
不——更准确的说法是 getObjectSummaries()
的大小是您收到的来自 listObjects()
的结果页面中的对象数。否则,是的——列表中的每个对象摘要应该对应于一个 S3 对象是正确的。
AWS 将大型结果集的结果分页为每页 1,000 个结果。在一般情况下,您需要多次进行此调用:
如果isTruncated() is true, call getNextMarker() to get the next marker to use in your next ListObjectsRequest to listObjects().
如果为 false,您收到的最后一个响应将是您需要处理的最后一个响应。此时您可以完成对象的计数。
考虑到这一点,这对于非常大的存储桶来说不是一个很好的解决方案,因为您必须枚举整个存储桶。您可以从 Java.
呼叫 an alternative solution using s3cmd
我需要知道 S3
存储桶中存储的文件数量。目前,ObjectListing
没有 count
或 numberOfObject
.
但是,它有一个方法可以 return 一个 S3ObjectSummary
的列表。
public java.util.List<S3ObjectSummary> getObjectSummaries()
因为它是一个 List
,我可以调用 size()
方法但是假设 getObjectSummaries()
列表的大小与存储在桶下?
不——更准确的说法是 getObjectSummaries()
的大小是您收到的来自 listObjects()
的结果页面中的对象数。否则,是的——列表中的每个对象摘要应该对应于一个 S3 对象是正确的。
AWS 将大型结果集的结果分页为每页 1,000 个结果。在一般情况下,您需要多次进行此调用:
如果isTruncated() is true, call getNextMarker() to get the next marker to use in your next ListObjectsRequest to listObjects().
如果为 false,您收到的最后一个响应将是您需要处理的最后一个响应。此时您可以完成对象的计数。
考虑到这一点,这对于非常大的存储桶来说不是一个很好的解决方案,因为您必须枚举整个存储桶。您可以从 Java.
呼叫 an alternative solution using s3cmd