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());
    };