All Products
Search
Document Center

Object Storage Service:Daftar objek (Android SDK)

Last Updated:Aug 28, 2026

Topik ini menjelaskan cara mendaftar objek dalam sebuah bucket, termasuk semua objek dalam bucket, sejumlah objek tertentu, serta objek yang namanya mengandung awalan tertentu.

Usage notes

  • Sebelum menjalankan kode contoh dalam topik ini, Anda harus membuat instans OSSClient dengan metode seperti menggunakan nama domain kustom atau Security Token Service (STS). Untuk informasi selengkapnya, lihat Initialization (Android SDK).

Daftar jumlah objek tertentu

Kode contoh berikut menunjukkan cara mendaftar 20 objek dalam bucket bernama examplebucket:

// Tentukan nama bucket. Misalnya, examplebucket.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
// Tentukan jumlah maksimum objek yang akan dikembalikan. Jika parameter ini tidak diatur, nilai default-nya adalah 100. Nilai maxKeys tidak boleh lebih dari 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) {
        // Tangani exception permintaan.
        if (clientException != null) {
            // Tangani exception sisi klien, seperti error jaringan.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Tangani exception sisi server.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

Daftar objek yang namanya mengandung awalan tertentu

Kode contoh berikut menunjukkan cara mendaftar objek yang namanya mengandung awalan "file" dalam bucket bernama examplebucket:

// Tentukan nama bucket. Misalnya, examplebucket.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
// Tentukan awalan.
// Mengembalikan semua objek yang namanya dimulai dengan awalan yang ditentukan. Misalnya, awalan 'a' mengembalikan objek seperti abc.txt dan 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) {
        // Tangani exception permintaan.
        if (clientException != null) {
            // Tangani exception sisi klien, seperti error jaringan.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Tangani exception sisi server.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

Daftar objek yang namanya secara alfabetis berada setelah nilai marker

Kode contoh berikut menunjukkan cara mendaftar objek yang namanya secara alfabetis berada setelah objek bernama exampleobject.txt dalam bucket bernama examplebucket:

// Tentukan nama bucket. Misalnya, examplebucket.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
// Daftar objek yang secara alfabetis mengikuti marker.
// Jika marker tidak sesuai dengan objek yang ada, daftar dimulai dari posisi alfabetis nilai marker tersebut.
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) {
        // Tangani exception permintaan.
        if (clientException != null) {
            // Tangani exception sisi klien, seperti error jaringan.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Tangani exception sisi server.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

Daftar semua objek dalam bucket secara berhalaman

Kode contoh berikut menunjukkan cara mendaftar semua objek dalam bucket bernama examplebucket secara berhalaman. Maksimal 20 objek dapat didaftarkan per halaman.

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

// Daftar semua objek secara berhalaman.
public void getAllObject() {
    do {
        OSSAsyncTask task = getObjectList();
        // Blokir thread untuk mendapatkan NextMarker. Untuk mengambil halaman berikutnya, atur marker ke nilai NextMarker dari respons sebelumnya. Tidak diperlukan marker untuk halaman pertama.
        // Contoh ini memblokir thread dalam loop untuk mendapatkan NextMarker guna paginasi. Di lingkungan produksi, tentukan apakah perlu memblokir thread berdasarkan kebutuhan aplikasi Anda.
        task.waitUntilFinished();
    } while (!isCompleted);
}

// Daftar satu halaman objek.
public OSSAsyncTask getObjectList() {
    // Tentukan nama bucket.
    ListObjectsRequest request = new ListObjectsRequest("examplebucket");
    // Tentukan jumlah maksimum objek yang dikembalikan per halaman. Jika parameter ini tidak diatur, nilai default-nya adalah 100. Nilai maxKeys tidak boleh lebih dari 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());
            }
            // Halaman terakhir hasil.
            if (!result.isTruncated()) {
                isCompleted = true;
                return;
            }
            // Marker untuk halaman hasil berikutnya.
            marker = result.getNextMarker();
        }

        @Override
        public void onFailure(ListObjectsRequest request, ClientException clientException, ServiceException serviceException) {
            isCompleted = true;
            // Tangani exception permintaan.
            if (clientException != null) {
                // Tangani exception sisi klien, seperti error jaringan.
                clientException.printStackTrace();
            }
            if (serviceException != null) {
                // Tangani exception sisi server.
                Log.e("ErrorCode", serviceException.getErrorCode());
                Log.e("RequestId", serviceException.getRequestId());
                Log.e("HostId", serviceException.getHostId());
                Log.e("RawMessage", serviceException.getRawMessage());
            }
        }
    });
    return task;
}

Daftar objek yang namanya mengandung awalan tertentu secara berhalaman

Kode contoh berikut menunjukkan cara mendaftar objek yang namanya mengandung awalan "file" dalam bucket bernama examplebucket secara berhalaman. Maksimal 20 objek dapat didaftarkan per halaman.

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

// Daftar semua objek dengan awalan tertentu secara berhalaman.
public void getAllObject() {
    do {
        OSSAsyncTask task = getObjectList();
        // Blokir thread untuk mendapatkan NextMarker. Untuk mengambil halaman berikutnya, atur marker ke nilai NextMarker dari respons sebelumnya. Tidak diperlukan marker untuk halaman pertama.
        // Contoh ini memblokir thread dalam loop untuk mendapatkan NextMarker guna paginasi. Di lingkungan produksi, tentukan apakah perlu memblokir thread berdasarkan kebutuhan aplikasi Anda.
        task.waitUntilFinished();
    } while (!isCompleted);
}

// Daftar satu halaman objek.
public OSSAsyncTask getObjectList() {
    // Tentukan nama bucket.
    ListObjectsRequest request = new ListObjectsRequest("examplebucket");
    // Tentukan jumlah maksimum objek yang dikembalikan per halaman. Jika parameter ini tidak diatur, nilai default-nya adalah 100. Nilai maxKeys tidak boleh lebih dari 1.000.
    request.setMaxKeys(20);
    // Tentukan awalan.
    // Mengembalikan semua objek yang namanya dimulai dengan awalan yang ditentukan. Misalnya, awalan 'a' mengembalikan objek seperti abc.txt dan 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());
            }
            // Halaman terakhir hasil.
            if (!result.isTruncated()) {
                isCompleted = true;
                return;
            }
            // Marker untuk halaman hasil berikutnya.
            marker = result.getNextMarker();
        }

        @Override
        public void onFailure(ListObjectsRequest request, ClientException clientException, ServiceException serviceException) {
            isCompleted = true;
            // Tangani exception permintaan.
            if (clientException != null) {
                // Tangani exception sisi klien, seperti error jaringan.
                clientException.printStackTrace();
            }
            if (serviceException != null) {
                // Tangani exception sisi server.
                Log.e("ErrorCode", serviceException.getErrorCode());
                Log.e("RequestId", serviceException.getRequestId());
                Log.e("HostId", serviceException.getHostId());
                Log.e("RawMessage", serviceException.getRawMessage());
            }
        }
    });
    return task;
}

Daftar objek yang namanya mengandung karakter khusus

Jika nama objek mengandung salah satu karakter khusus berikut, Anda harus melakukan encode terhadap nama objek tersebut sebelum mentransmisikannya. Hanya URL encoding yang didukung di OSS.

  • Tanda kutip tunggal (')

  • Tanda kutip ganda (")

  • Ampersand (&)

  • Tanda kurung sudut (<>)

  • Karakter Tionghoa

Kode contoh berikut menunjukkan cara mendaftar objek yang namanya mengandung karakter khusus dalam bucket bernama examplebucket:

// Tentukan nama bucket. Misalnya, examplebucket.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
// Tentukan jenis encoding untuk nama objek.
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) {
        // Tangani exception permintaan.
        if (clientException != null) {
            // Tangani exception sisi klien, seperti error jaringan.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Tangani exception sisi server.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

Referensi