全部产品
Search
文档中心

Object Storage Service:Daftar objek (Android SDK)

更新时间:Mar 20, 2026

Tampilkan daftar objek dalam sebuah bucket berdasarkan jumlah, awalan (prefix), atau rentang alfabetis, dengan dukungan penjelajahan halaman (paging) untuk set hasil yang besar dan pengkodean URL (URL encoding) pada nama objek yang mengandung karakter khusus.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Instans OSSClient yang telah diinisialisasi. Untuk detailnya, lihat Inisialisasi.

Menampilkan jumlah objek tertentu

Atur MaxKeys untuk mengontrol jumlah objek yang dikembalikan dalam satu panggilan. Contoh berikut mengembalikan hingga 20 objek dari examplebucket.

// Tentukan nama bucket.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
// Atur jumlah maksimum objek yang akan dikembalikan. Default: 100. Maksimum: 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) {
        if (clientException != null) {
            // Kesalahan sisi client, seperti kegagalan jaringan.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Kesalahan sisi server.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

Menampilkan objek berdasarkan awalan (prefix)

Atur awalan (prefix) untuk memfilter objek yang namanya diawali dengan string tertentu. Contoh berikut mengembalikan objek yang namanya diawali dengan file di dalam examplebucket.

// Tentukan nama bucket.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
// Atur prefix. Mengembalikan semua objek yang namanya diawali dengan "file",
// misalnya file1.txt dan file-archive.zip.
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) {
        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());
        }
    }
});

Menampilkan objek setelah marker tertentu

Atur marker untuk memulai penampilan daftar dari posisi tertentu. Operasi daftar ini mengembalikan objek yang namanya secara alfabetis berada setelah marker tersebut—marker itu sendiri tidak disertakan. Jika marker tidak ada di dalam bucket, penampilan daftar dimulai dari objek berikutnya dalam urutan alfabetis.

Contoh berikut menampilkan objek yang muncul setelah exampleobject.txt di dalam examplebucket.

// Tentukan nama bucket.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
// Atur marker. Daftar dimulai dari objek pertama secara alfabetis setelah "exampleobject.txt".
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) {
        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());
        }
    }
});

Menampilkan semua objek per halaman

Untuk menjelajahi seluruh isi bucket secara halaman demi halaman, gunakan isTruncated dan NextMarker secara bersamaan: jika isTruncated() mengembalikan nilai true, artinya hasil dipotong dan getNextMarker() memberikan titik awal untuk halaman berikutnya. Ketika isTruncated() mengembalikan nilai false, Anda telah mencapai halaman terakhir.

Contoh berikut menampilkan semua objek di dalam examplebucket dengan maksimal 20 objek per halaman.

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

// Jelajahi semua objek per halaman.
public void getAllObject() {
    do {
        OSSAsyncTask task = getObjectList();
        // Blokir thread saat ini hingga permintaan halaman selesai,
        // sehingga NextMarker tersedia sebelum iterasi berikutnya.
        // Sesuaikan strategi pemblokiran ini dengan model threading aplikasi Anda.
        task.waitUntilFinished();
    } while (!isCompleted);
}

// Ambil satu halaman objek.
public OSSAsyncTask getObjectList() {
    // Tentukan nama bucket.
    ListObjectsRequest request = new ListObjectsRequest("examplebucket");
    // Atur jumlah maksimum objek per halaman. Default: 100. Maksimum: 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());
            }
            if (!result.isTruncated()) {
                // Tidak ada halaman lagi.
                isCompleted = true;
                return;
            }
            // Gunakan NextMarker sebagai marker untuk halaman berikutnya.
            marker = result.getNextMarker();
        }

        @Override
        public void onFailure(ListObjectsRequest request, ClientException clientException, ServiceException serviceException) {
            isCompleted = true;
            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());
            }
        }
    });
    return task;
}

Menampilkan objek berdasarkan awalan (prefix), per halaman

Gabungkan pemfilteran berdasarkan awalan (prefix) dengan penjelajahan halaman untuk mengiterasi set hasil yang difilter dan berukuran besar. Contoh berikut menampilkan objek yang namanya diawali dengan file di dalam examplebucket, 20 objek per halaman.

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

// Jelajahi semua objek dengan prefix "file".
public void getAllObject() {
    do {
        OSSAsyncTask task = getObjectList();
        task.waitUntilFinished();
    } while (!isCompleted);
}

// Ambil satu halaman objek.
public OSSAsyncTask getObjectList() {
    // Tentukan nama bucket.
    ListObjectsRequest request = new ListObjectsRequest("examplebucket");
    // Atur jumlah maksimum objek per halaman. Default: 100. Maksimum: 1.000.
    request.setMaxKeys(20);
    // Atur prefix untuk memfilter objek berdasarkan nama.
    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());
            }
            if (!result.isTruncated()) {
                // Tidak ada halaman lagi.
                isCompleted = true;
                return;
            }
            // Gunakan NextMarker sebagai marker untuk halaman berikutnya.
            marker = result.getNextMarker();
        }

        @Override
        public void onFailure(ListObjectsRequest request, ClientException clientException, ServiceException serviceException) {
            isCompleted = true;
            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());
            }
        }
    });
    return task;
}

Menampilkan objek yang namanya mengandung karakter khusus

OSS mendukung pengkodean URL (URL encoding) untuk nama objek yang mengandung karakter khusus. Atur jenis pengkodean menjadi "url" sebelum melakukan permintaan, lalu dekode setiap nama objek yang dikembalikan menggunakan URLDecoder sebelum menggunakannya.

Nama objek yang memerlukan pengkodean URL meliputi yang mengandung:

  • Tanda kutip tunggal (')

  • Tanda kutip ganda (")

  • Ampersand (&)

  • Tanda kurung sudut (<>)

  • Karakter Tionghoa

Contoh berikut menampilkan objek yang mengandung karakter khusus di dalam examplebucket.

// Tentukan nama bucket.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
// Aktifkan pengkodean URL 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) {
        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());
        }
    }
});
Hanya pengkodean URL yang didukung di OSS untuk nama objek yang mengandung karakter khusus.

Parameter

Semua contoh menggunakan oss.asyncListObjects() dengan ListObjectsRequest. Tabel berikut merangkum parameter permintaan yang tersedia.

ParameterMetodeTipeDeskripsiDefaultMaksimum
Nama bucketnew ListObjectsRequest(name)StringNama bucket yang akan ditampilkan daftarnya.
MaxKeyssetMaxKeys(int)intJumlah maksimum objek yang dikembalikan per permintaan.1001.000
PrefixsetPrefix(String)StringMemfilter hasil ke objek yang namanya diawali dengan nilai ini.
MarkersetMarker(String)StringMengembalikan objek yang secara alfabetis berada setelah nilai ini. Gunakan getNextMarker() dari respons sebelumnya untuk maju ke halaman berikutnya.
Jenis pengkodeansetEncodingType(String)StringPengkodean yang diterapkan pada nama objek dalam respons. Atur ke "url" ketika nama objek mengandung karakter khusus.

Langkah berikutnya