Todos los productos
Search
Centro de documentos

Object Storage Service:Listar objetos (Android SDK)

Última actualización: Sep 03, 2026

Este tema describe cómo listar objetos en un bucket, por ejemplo, todos los objetos del bucket, una cantidad específica de objetos y objetos cuyos nombres contienen un prefijo determinado.

Notas de uso

  • Antes de ejecutar el código de ejemplo de este tema, debe crear una instancia de OSSClient mediante métodos como el uso de un nombre de dominio personalizado o Security Token Service (STS). Para obtener más información, consulte Initialization (Android SDK).

Listar una cantidad específica de objetos

A continuación se muestra un ejemplo de código para listar 20 objetos en un bucket llamado 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 cuyos nombres contienen un prefijo específico

A continuación se muestra un ejemplo de código para listar los objetos cuyos nombres contienen el prefijo file en un bucket llamado 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 cuyos nombres son alfabéticamente posteriores al valor de marker

A continuación se muestra un ejemplo de código para listar los objetos cuyos nombres son alfabéticamente posteriores al objeto llamado exampleobject.txt en un bucket llamado 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 los objetos de un bucket por página

A continuación se muestra un ejemplo de código para listar todos los objetos en un bucket llamado examplebucket por página. Se pueden listar hasta 20 objetos en cada página.

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 cuyos nombres contienen un prefijo específico por página

A continuación se muestra un ejemplo de código para listar los objetos cuyos nombres contienen el prefijo file en un bucket llamado examplebucket por página. Se pueden listar hasta 20 objetos en cada 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 cuyos nombres contienen caracteres especiales

Si el nombre de un objeto contiene alguno de los siguientes caracteres especiales, debe codificar el nombre del objeto antes de transmitirlo. En OSS solo se admite la codificación URL.

  • Comillas simples (')

  • Comillas dobles (")

  • Signos et (&)

  • Signos de mayor que y menor que (<>)

  • Caracteres chinos

A continuación se muestra un ejemplo de código para listar los objetos cuyos nombres contienen caracteres especiales en un bucket llamado 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());
        }
    }
});

Referencias