Todos os produtos
Search
Central de documentação

Object Storage Service:Listar objetos (Android SDK)

Última atualização: Aug 27, 2026

Este tópico descreve como listar objetos em um bucket, incluindo todos os objetos do bucket, uma quantidade específica de objetos e objetos cujos nomes contêm um prefixo definido.

Observações de uso

  • Antes de executar o código de exemplo deste tópico, crie uma instância OSSClient por meio de métodos como nome de domínio personalizado ou Security Token Service (STS). Para mais informações, consulte Initialization (Android SDK).

Listar uma quantidade específica de objetos

O código de exemplo a seguir mostra como listar 20 objetos em um bucket chamado examplebucket:

// Specify the bucket name. For example, examplebucket.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
// Specify the maximum number of objects to return. If this parameter is not set, the default value is 100. The value of maxKeys cannot be greater than 1,000.
request.setMaxKeys(20);

oss.asyncListObjects(request, new OSSCompletedCallback<ListObjectsRequest, ListObjectsResult>() {
    @Override
    public void onSuccess(ListObjectsRequest request, ListObjectsResult result) {
        for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
            Log.i("ListObjects", objectSummary.getKey());
        }
    }

    @Override
    public void onFailure(ListObjectsRequest request, ClientException clientException, ServiceException serviceException) {
        // Handle request exceptions.
        if (clientException != null) {
            // Handle client-side exceptions, such as network errors.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Handle server-side exceptions.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

Listar objetos cujos nomes contêm um prefixo específico

O código de exemplo a seguir mostra como listar objetos com o prefixo file no nome em um bucket chamado examplebucket:

// Specify the bucket name. For example, examplebucket.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
// Specify the prefix.
// Returns all objects whose names start with the specified prefix. For example, a prefix of 'a' returns objects such as abc.txt and abcd.jpg.
request.setPrefix("file");

oss.asyncListObjects(request, new OSSCompletedCallback<ListObjectsRequest, ListObjectsResult>() {
    @Override
    public void onSuccess(ListObjectsRequest request, ListObjectsResult result) {
        for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
            Log.i("ListObjects", objectSummary.getKey());
        }
    }

    @Override
    public void onFailure(ListObjectsRequest request, ClientException clientException, ServiceException serviceException) {
        // Handle request exceptions.
        if (clientException != null) {
            // Handle client-side exceptions, such as network errors.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Handle server-side exceptions.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

Listar objetos cujos nomes são alfabeticamente posteriores ao valor de marker

O código de exemplo a seguir mostra como listar objetos cujos nomes vêm depois do objeto exampleobject.txt, em ordem alfabética, em um bucket chamado examplebucket:

// Specify the bucket name. For example, examplebucket.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
// Lists objects that alphabetically follow the marker.
// If the marker does not correspond to an existing object, the list starts from the alphabetical position of the marker's value.
request.setMarker("exampleobject.txt");

oss.asyncListObjects(request, new OSSCompletedCallback<ListObjectsRequest, ListObjectsResult>() {
    @Override
    public void onSuccess(ListObjectsRequest request, ListObjectsResult result) {
        for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
            Log.i("ListObjects", objectSummary.getKey());
        }
    }

    @Override
    public void onFailure(ListObjectsRequest request, ClientException clientException, ServiceException serviceException) {
        // Handle request exceptions.
        if (clientException != null) {
            // Handle client-side exceptions, such as network errors.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Handle server-side exceptions.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

Listar todos os objetos de um bucket por página

O código de exemplo a seguir mostra como listar paginadamente todos os objetos em um bucket chamado examplebucket. Cada página exibe até 20 objetos.

private String marker = null;
private boolean isCompleted = false;

// List all objects by page.
public void getAllObject() {
    do {
        OSSAsyncTask task = getObjectList();
        // Block the thread to get the NextMarker. To fetch the next page, set the marker to the NextMarker value from the previous response. No marker is needed for the first page.
        // This example blocks the thread in a loop to get the NextMarker for pagination. In a production environment, decide whether to block the thread based on your application's requirements.
        task.waitUntilFinished();
    } while (!isCompleted);
}

// List one page of objects.
public OSSAsyncTask getObjectList() {
    // Specify the bucket name.
    ListObjectsRequest request = new ListObjectsRequest("examplebucket");
    // Specify the maximum number of objects to return per page. If this parameter is not set, the default value is 100. The value of maxKeys cannot be greater than 1,000.
    request.setMaxKeys(20);
    request.setMarker(marker);

    OSSAsyncTask task = oss.asyncListObjects(request, new OSSCompletedCallback<ListObjectsRequest, ListObjectsResult>() {
        @Override
        public void onSuccess(ListObjectsRequest request, ListObjectsResult result) {
            for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
                Log.i("ListObjects", objectSummary.getKey());
            }
            // Last page of results.
            if (!result.isTruncated()) {
                isCompleted = true;
                return;
            }
            // The marker for the next page of results.
            marker = result.getNextMarker();
        }

        @Override
        public void onFailure(ListObjectsRequest request, ClientException clientException, ServiceException serviceException) {
            isCompleted = true;
            // Handle request exceptions.
            if (clientException != null) {
                // Handle client-side exceptions, such as network errors.
                clientException.printStackTrace();
            }
            if (serviceException != null) {
                // Handle server-side exceptions.
                Log.e("ErrorCode", serviceException.getErrorCode());
                Log.e("RequestId", serviceException.getRequestId());
                Log.e("HostId", serviceException.getHostId());
                Log.e("RawMessage", serviceException.getRawMessage());
            }
        }
    });
    return task;
}

Listar objetos com prefixo específico por página

O código de exemplo a seguir mostra como listar paginadamente objetos com o prefixo file no nome em um bucket chamado examplebucket. O limite é de 20 objetos por página.

private String marker = null;
private boolean isCompleted = false;

// List all objects with the specified prefix by page.
public void getAllObject() {
    do {
        OSSAsyncTask task = getObjectList();
        // Block the thread to get the NextMarker. To fetch the next page, set the marker to the NextMarker value from the previous response. No marker is needed for the first page.
        // This example blocks the thread in a loop to get the NextMarker for pagination. In a production environment, decide whether to block the thread based on your application's requirements.
        task.waitUntilFinished();
    } while (!isCompleted);
}

// List one page of objects.
public OSSAsyncTask getObjectList() {
    // Specify the bucket name.
    ListObjectsRequest request = new ListObjectsRequest("examplebucket");
    // Specify the maximum number of objects to return per page. If this parameter is not set, the default value is 100. The value of maxKeys cannot be greater than 1,000.
    request.setMaxKeys(20);
    // Specify the prefix.
    // Returns all objects whose names start with the specified prefix. For example, a prefix of 'a' returns objects such as abc.txt and abcd.jpg.
    request.setPrefix("file");
    request.setMarker(marker);

    OSSAsyncTask task = oss.asyncListObjects(request, new OSSCompletedCallback<ListObjectsRequest, ListObjectsResult>() {
        @Override
        public void onSuccess(ListObjectsRequest request, ListObjectsResult result) {
            for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
                Log.i("ListObjects", objectSummary.getKey());
            }
            // Last page of results.
            if (!result.isTruncated()) {
                isCompleted = true;
                return;
            }
            // The marker for the next page of results.
            marker = result.getNextMarker();
        }

        @Override
        public void onFailure(ListObjectsRequest request, ClientException clientException, ServiceException serviceException) {
            isCompleted = true;
            // Handle request exceptions.
            if (clientException != null) {
                // Handle client-side exceptions, such as network errors.
                clientException.printStackTrace();
            }
            if (serviceException != null) {
                // Handle server-side exceptions.
                Log.e("ErrorCode", serviceException.getErrorCode());
                Log.e("RequestId", serviceException.getRequestId());
                Log.e("HostId", serviceException.getHostId());
                Log.e("RawMessage", serviceException.getRawMessage());
            }
        }
    });
    return task;
}

Listar objetos cujos nomes contêm caracteres especiais

Se o nome de um objeto contiver algum dos caracteres especiais listados abaixo, codifique-o antes da transmissão. O OSS oferece suporte apenas à codificação URL.

  • Aspas simples (')

  • Aspas duplas (")

  • E comercial (&)

  • Sinais de maior e menor que (<>)

  • Caracteres chineses

O código de exemplo a seguir mostra como listar objetos com caracteres especiais no nome em um bucket chamado examplebucket:

// Specify the bucket name. For example, examplebucket.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
// Specify the encoding type for object names.
request.setEncodingType("url");

oss.asyncListObjects(request, new OSSCompletedCallback<ListObjectsRequest, ListObjectsResult>() {
    @Override
    public void onSuccess(ListObjectsRequest request, ListObjectsResult result) {
        for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
            Log.i("ListObjects", URLDecoder.decode(objectSummary.getKey(), "UTF-8"));
        }
    }

    @Override
    public void onFailure(ListObjectsRequest request, ClientException clientException, ServiceException serviceException) {
        // Handle request exceptions.
        if (clientException != null) {
            // Handle client-side exceptions, such as network errors.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Handle server-side exceptions.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

Referências