存储空间(Bucket)是用来存储对象(Object)的容器。对象都隶属于存储空间。存储空间按照字母顺序排列。您可以列举所有存储空间以及符合指定条件的存储空间。

列举所有存储空间

以下代码用于列举所有存储空间。

// 填写STS应用服务器地址,例如http://example.com。
String stsServer = "http://example.com";
// 推荐使用OSSAuthCredentialsProvider,保证token过期时能自动更新token。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);

OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, null);

ListBucketsRequest request = new ListBucketsRequest();
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
    @Override
    public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
        List<OSSBucketSummary> buckets = result.getBuckets();
        for (int i = 0; i < buckets.size(); i++) {
            OSSLog.logDebug("name: " + buckets.get(i).name + " "
                    + "location: " + buckets.get(i).location);
        }
    }

    @Override
    public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
        // 请求异常。
        if (clientException != null) {
            // 客户端异常,例如网络异常等。
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // 服务端异常。
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

列举指定前缀的存储空间

以下代码用于列举以example为前缀(prefix)的存储空间。

// 填写STS应用服务器地址,例如http://example.com。
String stsServer = "http://example.com";
// 推荐使用OSSAuthCredentialsProvider,保证token过期时能自动更新token。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);

OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, null);

ListBucketsRequest request = new ListBucketsRequest();
// 填写前缀,例如example。
request.setPrefix("example");
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
    @Override
    public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
        List<OSSBucketSummary> buckets = result.getBuckets();
        for (int i = 0; i < buckets.size(); i++) {
            OSSLog.logDebug("name: " + buckets.get(i).name + " "
                    + "location: " + buckets.get(i).location);
        }
    }

    @Override
    public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
        // 请求异常。
        if (clientException != null) {
            // 客户端异常,例如网络异常等。
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // 服务端异常。
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

列举指定marker之后的存储空间

以下代码用于列举examplebucket之后的存储空间。

// 填写STS应用服务器地址,例如http://example.com。
String stsServer = "http://example.com";
// 推荐使用OSSAuthCredentialsProvider,保证token过期时能自动更新token。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);

OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, null);

ListBucketsRequest request = new ListBucketsRequest();
// 填写marker,例如examplebucket。从marker之后按字母排序的第一个开始返回存储空间。
request.setMarker("examplebucket");
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
    @Override
    public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
        List<OSSBucketSummary> buckets = result.getBuckets();
        for (int i = 0; i < buckets.size(); i++) {
            OSSLog.logDebug("name: " + buckets.get(i).name + " "
                    + "location: " + buckets.get(i).location);
        }
    }

    @Override
    public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
        // 请求异常。
        if (clientException != null) {
            // 客户端异常,例如网络异常等。
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // 服务端异常。
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

列举指定个数的存储空间

以下代码用于最多列举500个存储空间。

// 填写STS应用服务器地址,例如http://example.com。
String stsServer = "http://example.com";
// 推荐使用OSSAuthCredentialsProvider,保证token过期时能自动更新token。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);

OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, null);


ListBucketsRequest request = new ListBucketsRequest();
// 限定此次列举存储空间的最大个数为500。默认值为100,最大值为1000。
request.setMaxKeys(500);
ossClient.asyncListBuckets(request, new OSSCompletedCallback<ListBucketsRequest, ListBucketsResult>() {
    @Override
    public void onSuccess(ListBucketsRequest request, ListBucketsResult result) {
        List<OSSBucketSummary> buckets = result.getBuckets();
        for (int i = 0; i < buckets.size(); i++) {
            OSSLog.logDebug("name: " + buckets.get(i).name + " "
                    + "location: " + buckets.get(i).location);
        }
    }

    @Override
    public void onFailure(ListBucketsRequest request, ClientException clientException, ServiceException serviceException) {
        // 请求异常。
        if (clientException != null) {
            // 客户端异常,例如网络异常等。
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // 服务端异常。
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});