ReOSS对象存储api无法列出bucket下的所有object
ObjectListing listObjects(ListObjectsRequest listObjectsRequest)
ListObjectsRequest中有四个参数可以设置:
prefix限定返回的object key必须以prefix作为前缀。使用listObjectsRequest.setPrefix设置。
maker用户设定结果从marker之后按字母排序的第一个开始返回。使用listObjectsRequest.setMarker设置。
maxKeys用于限定此次返回object的最大数,如果不设定,默认为100。使用listObjectsRequest.setMaxKeys设置。
delimiter是一个用于对Object名字进行分组的字符。使用listObjectsRequest.setDelimiter设置。
上面4个参数都是有默认值的,如maxKeys默认每次listObjects返回100个object。
如果需要获取全部object,需要如下的方式分页显示:
ObjectListing objectListing = null;
String nextMarker = null;
final int maxKeys = 30;
do {
System.out.println("Listing objects:");
objectListing = client.listObjects(new ListObjectsRequest(bucketName).
withMarker(nextMarker).withMaxKeys(maxKeys));
List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
for (OSSObjectSummary s : sums) {
System.out.println("\t" + s.getKey());
}
nextMarker = objectListing.getNextMarker();
} while (objectListing.isTruncated());
不需要只显示文件夹,可以设置delimiter为"/"参数,对object进行分组。应该如下。
objectListing = client.listObjects(new ListObjectsRequest(bucketName).
withMarker(nextMarker).withMaxKeys(maxKeys).withDelimiter("/"));