ObjectListing objList = client.listObjects(bktName, objPrefix);
如何遍历objList?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Java中使用阿里云OSS(Object Storage Service)客户端遍历ObjectListing
对象以获取存储桶中的对象列表,可以通过以下方式进行:
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.ObjectListing;
import com.aliyun.oss.model.OSSObjectSummary;
// 创建OSSClient实例。
String endpoint = "<Your endpoint>";
String accessKeyId = "<Your AccessKeyId>";
String accessKeySecret = "<Your AccessKeySecret>";
String bucketName = "<Your bucket name>";
String objectPrefix = "<Your object prefix>"; // 对象前缀,用于过滤对象
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 获取指定Bucket下的对象列表
ObjectListing objList = ossClient.listObjects(bucketName, objectPrefix);
// 遍历对象列表
for (OSSObjectSummary objectSummary : objList.getObjectSummaries()) {
System.out.println(" - " + objectSummary.getKey()); // 打印对象的键名(Key)
}
// 如果列表未列举完,需要处理翻页
while (objList.isTruncated()) {
String nextMarker = objList.getNextMarker();
objList = ossClient.listObjects(new ListObjectsRequest(bucketName).withMarker(nextMarker).withPrefix(objectPrefix));
for (OSSObjectSummary objectSummary : objList.getObjectSummaries()) {
System.out.println(" - " + objectSummary.getKey());
}
}
// 关闭OSSClient。
ossClient.shutdown();
这段代码首先创建了OSSClient实例,然后调用listObjects
方法获取指定Bucket下、具有特定前缀的对象列表。之后通过一个for-each循环遍历ObjectListing
中的OSSObjectSummary
对象,打印出每个对象的键名(Key)。如果ObjectListing
中的对象列表没有完全列举出来(即isTruncated()
返回true
),则需要根据getNextMarker()
得到的标记值继续调用listObjects
进行翻页操作,直到所有对象都被列举完毕。
最后,记得关闭OSSClient以释放资源。