我正在使用下面提到的代码来获取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());
}