如何在AWS ListObjectsV2Request对象上设置下一个延续令牌



我正在使用Java2.15.66的AWS SDK。我试图列出一个特定文件夹下的所有对象。我在这里遵循代码示例https://docs.aws.amazon.com/AmazonS3/latest/userguide/ListingKeysUsingAPIs.html,并且必须修改,因为示例中的类在我的SDK版本中不可用。下面是列出对象的代码

ListObjectsV2Request req = ListObjectsV2Request.builder()
.bucket(S3_BUCKET_NAME)
.prefix(pathBuilder.toString())
.maxKeys(2)
.build();
ListObjectsV2Response result;
do {
result = s3Client.listObjectsV2(req);
for (S3Object s3Object : result.contents()) {
System.out.printf(" - %s (size: %d)n", s3Object.key(), s3Object.size());
}
req.toBuilder().continuationToken(result.nextContinuationToken());
} while (result.isTruncated());

这段代码总是在每个while循环中打印出相同的两个对象。也就是nextContinuationToken()从来没有设置过。我找不到任何其他方法来设置延续令牌。帮助感激。

试试下面的代码,参考链接来自官方aws文档

ListObjectsV2Request listObjectsReqManual = ListObjectsV2Request.builder()
.bucket(bucketName)
.maxKeys(1)
.build();
boolean done = false;
while (!done) {
ListObjectsV2Response listObjResponse = s3.listObjectsV2(listObjectsReqManual);
for (S3Object content : listObjResponse.contents()) {
System.out.println(content.key());
}
if (listObjResponse.nextContinuationToken() == null) {
done = true;
}
listObjectsReqManual = listObjectsReqManual.toBuilder()
.continuationToken(listObjResponse.nextContinuationToken())
.build();
}

需要将.toBuilder().continuationToken(…)方法的结果赋值给一个变量

相关内容

  • 没有找到相关文章

最新更新