Has*_*eeb 6 java amazon-s3 amazon-web-services aws-sdk
我将所有类型的文件存储在亚马逊 S3 上。在亚马逊S3存储桶中,所有文件都存储在不同的文件夹中,我知道亚马逊S3中没有文件夹的概念。对象只能通过它们的键来识别。如果我存储任何带有“mydocs/personal/profile-pic.jpg”之类的密钥的文件,这意味着将在那里创建两个父文件夹(mydocs 文件夹内的个人文件夹)。
我想计算java中像“mydocs”这样的任何文件夹的大小。我使用下面给出的代码计算了存储桶总大小:
public long calculateBucketSize(String bucketName) {
long totalSize = 0;
int totalItems = 0;
ObjectListing objects = listObjects(bucketName);
do {
for (S3ObjectSummary objectSummary : objects.getObjectSummaries()) {
totalSize += objectSummary.getSize();
totalItems++;
}
objects = listNextBatchOfObjects(objects);
} while (objects.isTruncated());
System.out.println("Amazon S3 bucket: " + bucketName + " containing "
+ totalItems + " objects with a total size of " + totalSize
+ " bytes.");
return totalSize;
}
Run Code Online (Sandbox Code Playgroud)
此方法将返回存储桶的总大小。我想计算任何单个文件夹的大小。任何帮助将不胜感激。
我认为您想要获取每个级别的文件夹大小。就像如果您有一个根文件夹 R-Folder 和两个子文件夹 S1.1-Folder、S1.2-Folder,然后 S1.1-Folder 又具有三个子文件夹 S1.1.1-Folder、S1.1.2-Folder、S1。 1.3-文件夹。现在您想要每个文件夹的文件夹大小
R-Folder (32MB)
|__S1.1-Folder (22MB)
| |__S1.1.1-Folder (7MB)
| |__S1.1.2-Folder (5MB)
| |__S1.1.3-Folder (10MB)
|
|__S1.2-FOlder (10MB)
Run Code Online (Sandbox Code Playgroud)
我对么 ?
您必须保留状态为已完成或未完成的列表文件夹详细信息 - 并递归扫描每个文件夹。当内部文件夹成功完成时,您必须更新其相应父级的大小,并且该父级将更新到相应的父级,并且每次都会继续直到 root。
| 归档时间: |
|
| 查看次数: |
8323 次 |
| 最近记录: |