如何使用Java计算S3存储桶中的对象总数?

如何使用Java计算S3存储桶中的对象总数?,java,amazon-web-services,amazon-s3,aws-sdk,s3-bucket,Java,Amazon Web Services,Amazon S3,Aws Sdk,S3 Bucket,我试图找到一种更快的方法,使用Amazon的AWS SDK计算s3存储桶中的所有对象 private static int getBucketFileCount(AmazonS3 s3, ListObjectsV2Request req) { ListObjectsV2Result result; int fileCount = 0; log.info("Counting s3 files"); do { result = s3.listObjectsV2(

我试图找到一种更快的方法,使用Amazon的AWS SDK计算s3存储桶中的所有对象

private static int getBucketFileCount(AmazonS3 s3, ListObjectsV2Request req) {
   ListObjectsV2Result result;
   int fileCount = 0;
   log.info("Counting s3 files");

   do {
      result = s3.listObjectsV2(req);
      for (S3ObjectSummary objectSummary : result.getObjectSummaries()) {
         fileCount++;
      }
      req.setContinuationToken(result.getNextContinuationToken());

   } while (result.isTruncated() == true);
       return fileCount;
}
然而,这种方法非常慢,我还没有找到一种正确的方法。我已经找到了另一个答案,这有点帮助,但无法准确地理解实现。


如何在当前实现中使用该函数?我需要更改什么?

我注意到在for循环中有
fileCount+=result.getKeyCount()
以及
fileCount++
。你是在重复计数吗?啊,我的错,这是我忘记删除的东西。如果你不需要最新的计数值,这是Amazon S3同步列表API操作的预定替代方案。它每天或每周提供对象及其相应元数据的逗号分隔值(.csv)平面文件输出。有关答案,请参阅。@AmitKhandelwal我已链接到该帖子。我仍然不知道如何准确地使用这些函数,因为我不太熟悉aws sdk