如何在 AWS ListObjectsV2Request 对象上设置下一个延续令牌
How to set next continuation token on AWS ListObjectsV2Request object
我正在为 Java 2.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()
。我找不到任何其他方法来设置延续令牌。帮助表示赞赏。
尝试使用以下代码,参考 link 来自官方 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(…)
方法的结果赋给一个变量
我正在为 Java 2.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()
。我找不到任何其他方法来设置延续令牌。帮助表示赞赏。
尝试使用以下代码,参考 link 来自官方 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(…)
方法的结果赋给一个变量