全部產品
Search
文件中心

Object Storage Service:Android列舉儲存空間

更新時間:Feb 28, 2024

儲存空間(Bucket)是用來儲存物件(Object)的容器。對象都隸屬於儲存空間。儲存空間按照字母順序排列。您可以列舉當前帳號所有地區下符合指定條件的儲存空間。

注意事項

使用樣本前,需要初始化ossClient用於列舉儲存空間,初始化方法如下:

// 填寫STS應用伺服器位址,例如http://example.com。
String stsServer = "http://example.com";
// 推薦使用OSSAuthCredentialsProvider,確保token到期時自動更新。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);
ClientConfiguration config = new ClientConfiguration();
OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, config);

列舉所有儲存空間

以下代碼用於列舉當前帳號所有地區下的儲存空間。

// 填寫STS應用伺服器位址,例如http://example.com。
String stsServer = "http://example.com";
// 推薦使用OSSAuthCredentialsProvider,確保token到期時自動更新。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);
ClientConfiguration config = new ClientConfiguration();
OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, config);

// 列舉當前帳號所有地區下的儲存空間。
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++) {
            Log.i("info", "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)的儲存空間。

說明

首碼為模糊比對,查詢結果為名稱是<輸入參數>+*的檔案,如果輸入a 將返回所有以a為首碼的bucket,例如abucket,abcbucket。

// 填寫STS應用伺服器位址,例如http://example.com。
String stsServer = "http://example.com";
// 推薦使用OSSAuthCredentialsProvider,確保token到期時自動更新。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);
ClientConfiguration config = new ClientConfiguration();
OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, config);

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++) {
            Log.i("i", "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之後的儲存空間。

說明

首碼為模糊比對,查詢結果為名稱是<輸入參數>+*的檔案,如果輸入a 將返回所有以a為首碼的bucket,例如abucket,abcbucket。

查詢結果為模糊比對所匹配到的第一個及之後的所有儲存空間。

// 填寫STS應用伺服器位址,例如http://example.com。
String stsServer = "http://example.com";
// 推薦使用OSSAuthCredentialsProvider,確保token到期時自動更新。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);
ClientConfiguration config = new ClientConfiguration();
OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, config);

ListBucketsRequest request = new ListBucketsRequest();
// 列舉當前帳號所有地區下名稱的字母序排在examplebucket之後的儲存空間。
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++) {
            Log.i("i", "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到期時自動更新。
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);
ClientConfiguration config = new ClientConfiguration();
OSSClient ossClient = new OSSClient(getApplicationContext(), credentialProvider, config);

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++) {
            Log.i("i", "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());
        }
    }
});

相關文檔