开发者社区 问答 正文

javaSDK获取object列表后如何遍历


ObjectListing objList = client.listObjects(bktName, objPrefix);
如何遍历objList?

展开
收起
chuong 2012-08-28 16:27:18 5057 分享 版权
阿里云 AI 助理回答

在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以释放资源。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: