获取对象列表
您可以使用 listObjects 接口列举对象,每次最多返回1000个对象,以下代码展示如何简单获取对象列表:
String bucketName = "<your-bucket-name>";
ObjectListing ol = s3.listObjects(bucketName);
List<S3ObjectSummary> objects = ol.getObjectSummaries();
for (S3ObjectSummary os: objects) {
System.out.println("* " + os.getKey());
}
如果 list 大于1000,则返回的结果中 isTruncated 为true,通过返回的 NextMarker 标记可以作为下次读取的起点。列举所有对象示例代码如下:
String nextMarker = null;
ObjectListing objectListing;
do {
ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
listObjectsRequest.withBucketName(bucketName).withMarker(nextMarker);
objectListing = s3.listObjects(listObjectsRequest);
for (S3ObjectSummary s3ObjectSummary: objectListing.getObjectSummaries()) {
System.out.println(s3ObjectSummary.getKey());
}
nextMarker = objectListing.getNextMarker();
} while (objectListing.isTruncated());
ListObjectsRequest 中可设置的参数如下:
参数 | 说明 |
---|---|
BucketName | 设置桶名称。 |
EncodingType | 用于设置返回对象的字符编码类型。 |
Marker | 指定列出对象读取对象的起点。 |
MaxKeys | 设置response中返回对象的数量,默认值和最大值均为1000。 |
Prefix | 限定列举 objectKey 匹配前缀 prefix 的对象。 |
Delimiter | 用于对对象 objectKey 进行分组的字符。所有名字包含指定的prefix(可以不指定)且第一次出现 delimiter 字符之间的对象作为一组返回对象。 |
RequestPayer | 确认请求者知道将为操作付费。桶的所有者不需要在请求中指定这个参数。 |