1. 获取所有object时可以指定prefix前缀,如下,定义一个变量累加每个object大小就可以了
OSSClient client = new OSSClient(OSS_ENDPOINT, ACCESS_ID, ACCESS_KEY)
String bucketName = "hpdemo"
ObjectListing listing = client.listObjects(bucketName, "log")
// 遍镇携历所有Object
for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
System.out.println(objectSummary.getKey())
System.out.println(objectSummary.getSize())//输出每个object文件的大小
}
2. 如果只想要统计一个文件夹下的所有文件,子文件夹不统计,比如log文件夹里面有很多日志文件,也有子文件夹,可以参考如下
ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName)
// 设置参数
listObjectsRequest.setDelimiter("/")
listObjectsRequest.setPrefix("log/")
ObjectListing listing = client.listObjects(listObjectsRequest)
//御档伏 遍历所有Object
for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
System.out.println(objectSummary.getKey())
System.out.println(objectSummary.getSize())//输出object的大小
}
// 遍历蠢皮所有CommonPrefix
System.out.println("CommonPrefixs:")
for (String commonPrefix : listing.getCommonPrefixes()) {
System.out.println(commonPrefix)
}
对象存储(OSS)中文件夹的概念仅是一个逻辑概念,在通过API/SDK的方式设置文件夹的时候可以指定object对应的key值包括前面的目录即可实现该功能。行逗迟例如,定义object的key为abc/1.jpg就会在该bucket下创建一个abc的文件夹,而在文件夹下即会有一个1.jpg的文件。
对象存储(OSS)中的文件夹其实是一个大小为0KB的空文件。因此,用户创建一个key值为1/的object就会定义文件夹1;并且如果用户创建文件abc/1.jpg,系统是不会创建abc/这个文件的,因此在删除abc/1.jpg后将不会再存在abc这个文件夹。
由于对象存储(OSS)采用的是分布式存储的方式,object并不是根据文件夹进行物理存储的。也就是说并不是一个文件夹下的所有的文件都会存储在一起的。在后端存储的过程中不同的文件夹的文件仅仅是key值的前缀不一样。因此这种架构下就会导致无法很方便的统计某个文件夹下的汇总信息,如文件夹大小、文件夹PV数等。而想要遍历某个文件夹下的所有的文件也需要首先通过ListObject接口获取文件夹下的所有文件的key值(这里需要通档李过prefix指定文件夹),然后再进行 *** 作。
在逻辑上“中国.mp4”将存放到目指缺录“videos”中
https://help.aliyun.com/knowledge_detail/39527.html
https://www.jianshu.com/p/4212d37c0e0f
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)