我正在使用下面提到的代码来获取s3存储桶中所有文件名的列表。我在S3中有两个存储桶。对于以下存储桶之一,代码将返回所有文件名(超过1000个),但同一代码仅返回另一个存储桶的1000个文件名。我只是不知道发生了什么事。
为什么相同的代码在一个存储桶中运行,而不在另一个存储桶中运行?

我的存储桶也具有层次结构文件夹/filename.jpg。

ObjectListing objects = s3.listObjects("bucket.new.test");
do {
    for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) {
        String key = objectSummary.getKey();
        System.out.println(key);
    }
    objects = s3.listNextBatchOfObjects(objects);
} while (objects.isTruncated());

最佳答案

改善@Abhishek的答案。
该代码略短,并且变量名是固定的。


List<S3ObjectSummary> keyList = new ArrayList<S3ObjectSummary>();
ObjectListing objects = s3.listObjects("bucket.new.test");
keyList.addAll(objects.getObjectSummaries());

while (objects.isTruncated()) {
    objects = s3.listNextBatchOfObjects(objects);
    keyList.addAll(objects.getObjectSummaries());
}

10-07 11:58
查看更多