aws java驱动程序未循环通过密钥
我有以下代码:aws java驱动程序未循环通过密钥,java,amazon-web-services,Java,Amazon Web Services,我有以下代码: AmazonS3 s3 = new AmazonS3Client(awsCredentials); ObjectListing listing = s3.listObjects(new ListObjectsRequest() .withBucketName( "myBucket" ) .withPrefix(path)); System.out.println("path we need: " + path);
AmazonS3 s3 = new AmazonS3Client(awsCredentials);
ObjectListing listing = s3.listObjects(new ListObjectsRequest()
.withBucketName( "myBucket" )
.withPrefix(path));
System.out.println("path we need: " + path);
List<S3ObjectSummary> summaries = listing.getObjectSummaries();
System.out.println(summaries.size());
do {
listing = s3.listNextBatchOfObjects (listing);
for (S3ObjectSummary objectSummary : listing.getObjectSummaries()) {
System.out.println(objectSummary.getKey());
}
listing.setMarker(listing.getNextMarker());
}
while(listing.isTruncated());
打印出我期望的行。但是,当它在S3ObjectSummary上循环时,不会输出任何内容。我做错了什么 在打印信息之前,您似乎正在尝试获取下一组被截断的对象。如果没有任何内容被截断,这可能就是您无法获得结果的原因。我建议更改循环代码以匹配以下内容,然后重试
AmazonS3 s3 = new AmazonS3Client(creds);
ObjectListing listing = s3.listObjects(new ListObjectsRequest().withBucketName("myBucket").withPrefix(path));
System.out.println("path we need: " + path);
System.out.println(listing.getObjectSummaries().size() + " | " + listing.isTruncated());
while(listing.getObjectSummaries().size() > 0) {
for (S3ObjectSummary objectSummary : listing.getObjectSummaries()) {
System.out.println(objectSummary.getKey());
}
if(!listing.isTruncated()) break;
listing = s3.listNextBatchOfObjects(listing);
System.out.println(listing.getObjectSummaries().size() + " | " + listing.isTruncated());
};
我已经在我自己的一个S3存储桶上测试过了,它似乎按照我的预期工作
AmazonS3 s3 = new AmazonS3Client(creds);
ObjectListing listing = s3.listObjects(new ListObjectsRequest().withBucketName("myBucket").withPrefix(path));
System.out.println("path we need: " + path);
System.out.println(listing.getObjectSummaries().size() + " | " + listing.isTruncated());
while(listing.getObjectSummaries().size() > 0) {
for (S3ObjectSummary objectSummary : listing.getObjectSummaries()) {
System.out.println(objectSummary.getKey());
}
if(!listing.isTruncated()) break;
listing = s3.listNextBatchOfObjects(listing);
System.out.println(listing.getObjectSummaries().size() + " | " + listing.isTruncated());
};