全部产品
Search
文档中心

Object Storage Service:Daftar objek (Java SDK V1)

更新时间:Nov 27, 2025

Topik ini menjelaskan cara mendaftar semua objek, sejumlah objek tertentu, dan objek yang namanya mengandung awalan tertentu dalam bucket Object Storage Service (OSS).

Catatan penggunaan

  • Pada topik ini, titik akhir publik wilayah China (Hangzhou) digunakan. Untuk mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk detail wilayah dan titik akhir yang didukung, lihat Wilayah dan titik akhir.

  • Pada topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses, lihat Konfigurasi kredensial akses.

  • Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Contoh konfigurasi untuk skenario umum.

  • Untuk mendaftar objek, Anda harus memiliki izin oss:ListObjects. Untuk informasi lebih lanjut, lihat Berikan izin kustom kepada RAM user.

Informasi latar belakang

Anda dapat memanggil operasi API GetBucket (ListObjects) atau GetBucketV2 (ListObjectsV2) untuk mendaftar hingga 1.000 objek dalam satu bucket sekaligus. Anda dapat menentukan parameter untuk mengaktifkan berbagai fitur pendaftaran, seperti mendaftar semua objek setelah posisi awal tertentu, mendaftar file dan subdirektori dalam direktori tertentu, serta mendaftar lebih dari 1.000 objek menggunakan paging. Perbedaan utama antara kedua operasi API ini adalah sebagai berikut:

  • Saat menggunakan operasi API GetBucket (ListObjects) untuk mendaftar objek, informasi pemilik dikembalikan secara default.

  • Saat menggunakan operasi API GetBucketV2 (ListObjectsV2) untuk mendaftar objek, Anda harus menggunakan parameter fetchOwner untuk menentukan apakah informasi pemilik disertakan dalam respons.

    Catatan

    Untuk bucket yang telah mengaktifkan Pengendalian versi, gunakan operasi API GetBucketV2 (ListObjectsV2) untuk mendaftar objek.

Bagian berikut menjelaskan parameter untuk metode GetBucket (ListObjects) dan GetBucketV2 (ListObjectsV2).

  • Mendaftar objek menggunakan metode GetBucket (ListObjects)

    Anda dapat memanggil operasi GetBucket (ListObjects) dalam salah satu format berikut:

    • ObjectListing listObjects(String bucketName): mendaftar semua objek dalam bucket. Secara default, satu permintaan dapat mendaftar hingga 100 objek.

    • ObjectListing listObjects(String bucketName, String prefix): mendaftar objek yang namanya mengandung awalan tertentu dalam bucket. Secara default, satu permintaan dapat mendaftar hingga 100 objek.

    • ObjectListing listObjects(ListObjectsRequest listObjectsRequest): menyediakan berbagai fitur penyaringan untuk kueri fleksibel.

    Tabel berikut menjelaskan parameter yang dapat Anda tentukan saat memanggil operasi GetBucket (ListObjects).

    Parameter

    Deskripsi

    Metode

    objectSummaries

    Metadata objek yang akan dikembalikan.

    List<OSSObjectSummary> getObjectSummaries()

    prefix

    Awalan hasil kueri.

    String getPrefix()

    delimiter

    Karakter yang digunakan untuk mengelompokkan nama objek.

    String getDelimiter()

    marker

    Posisi tempat pendaftaran dimulai.

    String getMarker()

    maxKeys

    Jumlah maksimum objek yang akan didaftar.

    int getMaxKeys()

    nextMarker

    Posisi tempat pendaftaran berikutnya dimulai.

    String getNextMarker()

    isTruncated

    Menunjukkan apakah daftar objek terpotong.

    • false: Daftar tidak terpotong.

    • true: Daftar terpotong.

    boolean isTruncated()

    commonPrefixes

    Kumpulan objek yang namanya diakhiri dengan delimiter dan memiliki awalan umum.

    List<String> getCommonPrefixes()

    encodingType

    Jenis encoding yang digunakan dalam respons.

    String getEncodingType()

  • Mendaftar objek menggunakan metode GetBucketV2 (ListObjectsV2)

    Anda dapat memanggil operasi GetBucketV2 (ListObjectsV2) dalam salah satu format berikut:

    • ListObjectsV2Result listObjectsV2(String bucketName): mendaftar semua objek dalam bucket. Secara default, satu permintaan dapat mendaftar hingga 100 objek.

    • ListObjectsV2Result listObjectsV2(String bucketName, String prefix): mendaftar objek yang namanya mengandung awalan tertentu dalam bucket. Secara default, satu permintaan dapat mendaftar hingga 100 objek.

    • ListObjectsV2Result listObjectsV2(ListObjectsRequest listObjectsRequest): menyediakan berbagai fitur penyaringan untuk kueri fleksibel.

    Tabel berikut menjelaskan parameter yang dapat Anda tentukan saat memanggil operasi GetBucketV2 (ListObjectsV2).

    Parameter

    Deskripsi

    Metode

    objectSummaries

    Metadata objek yang akan dikembalikan.

    List<OSSObjectSummary> getObjectSummaries()

    prefix

    Awalan hasil kueri.

    String getPrefix()

    delimiter

    Karakter yang digunakan untuk mengelompokkan nama objek.

    String getDelimiter()

    startAfter

    Posisi tempat pendaftaran dimulai.

    String getStartAfter()

    maxKeys

    Jumlah maksimum objek yang akan didaftar.

    int getMaxKeys()

    continuationToken

    Posisi tempat pendaftaran dimulai.

    String getContinuationToken()

    nextContinuationToken

    Posisi tempat pendaftaran berikutnya dimulai.

    String getNextContinuationToken()

    isTruncated

    Menunjukkan apakah daftar objek terpotong.

    • false: Daftar tidak terpotong.

    • true: Daftar terpotong.

    boolean isTruncated()

    commonPrefixes

    Kumpulan objek yang namanya diakhiri dengan delimiter dan memiliki awalan umum.

    List<String> getCommonPrefixes()

    encodingType

    Jenis encoding yang digunakan dalam respons.

    String getEncodingType()

    fetchOwner

    Menentukan apakah informasi pemilik disertakan dalam respons.

    • true: Respons menyertakan informasi pemilik.

    • false: Respons tidak menyertakan informasi pemilik.

    String getFetchOwner()

Pendaftaran objek sederhana

Anda dapat menggunakan metode GetBucket (ListObjects) atau metode GetBucketV2 (ListObjectsV2) untuk mendaftar objek dalam bucket tertentu.

Menggunakan metode GetBucket (ListObjects)

Kode contoh berikut memberikan contoh cara menggunakan metode GetBucket (ListObjects) untuk mendaftar objek dalam bucket tertentu. Secara default, satu permintaan mengembalikan hingga 100 objek.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Tentukan awalan, misalnya exampledir/object.
        String keyPrefix = "exampledir/object";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Daftar objek. Jika Anda tidak mengatur keyPrefix, semua objek dalam bucket akan didaftar. Jika Anda mengatur keyPrefix, objek yang namanya mengandung awalan yang ditentukan akan didaftar.
            ObjectListing objectListing = ossClient.listObjects(bucketName, keyPrefix);
            List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
            for (OSSObjectSummary s : sums) {
                System.out.println("\t" + s.getKey());
            }
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}                  

Menggunakan metode GetBucketV2 (ListObjectsV2)

Kode contoh berikut memberikan contoh cara menggunakan metode GetBucketV2 (ListObjectsV2) untuk mendaftar objek dalam bucket tertentu. Secara default, satu permintaan mengembalikan hingga 100 objek.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Tentukan awalan, misalnya exampledir/object.
        String keyPrefix = "exampledir/object";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

       // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Daftar objek. Jika Anda tidak mengatur keyPrefix, semua objek dalam bucket akan didaftar. Jika Anda mengatur keyPrefix, objek yang namanya mengandung awalan yang ditentukan akan didaftar.
            ListObjectsV2Result result = ossClient.listObjectsV2(bucketName, keyPrefix);
            List<OSSObjectSummary> ossObjectSummaries = result.getObjectSummaries();

            for (OSSObjectSummary s : ossObjectSummaries) {
                System.out.println("\t" + s.getKey());
            }
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar objek menggunakan ListObjectsRequest

Anda dapat mengatur parameter ListObjectsRequest untuk mengaktifkan berbagai fitur kueri fleksibel. Tabel berikut menjelaskan parameter ListObjectsRequest.

Parameter

Deskripsi

Metode

prefix

Awalan yang harus dimiliki oleh nama objek yang dikembalikan.

setPrefix(String prefix)

delimiter

Karakter yang digunakan untuk mengelompokkan nama objek. Semua nama objek yang mengandung string yang sama dari awalan hingga kemunculan pertama delimiter dikelompokkan sebagai satu elemen hasil di bawah CommonPrefixes. Hal ini membantu Anda menjelajahi bucket sebagai hierarki folder.

setDelimiter(String delimiter)

marker

Nama objek setelah mana pendaftaran dimulai. Parameter ini mengembalikan objek yang namanya diurutkan secara leksikografis setelah nilai marker.

setMarker(String marker)

maxKeys

Jumlah maksimum objek yang dikembalikan. Hasil dikembalikan dalam urutan leksikografis. Nilai default adalah 100. Nilai maksimum adalah 1.000.

setMaxKeys(Integer maxKeys)

encodingType

Jenis encoding untuk nama objek dalam badan respons. Hanya encoding URL yang didukung.

setEncodingType(String encodingType)

Mendaftar jumlah objek tertentu

Kode contoh berikut memberikan contoh cara mendaftar jumlah objek tertentu.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Atur jumlah maksimum objek.
            final int maxKeys = 200;
            // Daftar objek.
            ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withMaxKeys(maxKeys));
            List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
            for (OSSObjectSummary s : sums) {
                System.out.println("\t" + s.getKey());
            }
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}                    

Mendaftar objek dengan awalan tertentu

Kode contoh berikut memberikan contoh cara mendaftar objek yang mengandung awalan tertentu.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Tentukan awalan, misalnya exampledir/object.
        String keyPrefix = "exampledir/object";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Daftar objek yang mengandung awalan yang ditentukan. Secara default, 100 objek didaftar.
            ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
            List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
            for (OSSObjectSummary s : sums) {
                System.out.println("\t" + s.getKey());
            }
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}                    

Mendaftar objek setelah marker tertentu

Kode contoh berikut memberikan contoh cara mendaftar objek yang namanya secara leksikografis berada setelah string marker tertentu.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Tentukan bahwa objek dikembalikan dalam urutan alfabet mulai dari objek yang mengikuti marker.  
        String marker = "ex";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Daftar objek setelah marker yang ditentukan. Secara default, 100 objek didaftar.
            ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withMarker(marker));
            List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
            for (OSSObjectSummary s : sums) {
                System.out.println("\t" + s.getKey());
            }
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar semua objek per halaman

Kode contoh berikut memberikan contoh cara mendaftar semua objek dalam bucket tertentu per halaman. Jumlah objek yang didaftar pada setiap halaman ditentukan oleh parameter maxKeys.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Atur jumlah objek yang didaftar pada setiap halaman menjadi 200.
        int maxKeys = 200;
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            String nextMarker = null;
            ObjectListing objectListing;

            do {
                objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withMarker(nextMarker).withMaxKeys(maxKeys));

                List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
                for (OSSObjectSummary s : sums) {
                    System.out.println("\t" + s.getKey());
                }

                nextMarker = objectListing.getNextMarker();

            } while (objectListing.isTruncated());
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar objek dengan awalan tertentu per halaman

Kode contoh berikut memberikan contoh cara mendaftar objek yang mengandung awalan tertentu per halaman.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.List;;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Tentukan jumlah objek yang didaftar pada setiap halaman sebagai 200.
        int maxKeys = 200;
        // Tentukan awalan, misalnya exampledir/object.
        String keyPrefix = "exampledir/object";
        // Atur marker, misalnya objecttest.txt.
        String nextMarker = "objecttest.txt";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            ObjectListing objectListing;

            do {
                objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).
                        withPrefix(keyPrefix).withMarker(nextMarker).withMaxKeys(maxKeys));

                List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
                for (OSSObjectSummary s : sums) {
                    System.out.println("\t" + s.getKey());
                }

                nextMarker = objectListing.getNextMarker();

            } while (objectListing.isTruncated());

        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Menentukan encoding nama objek

Jika nama objek mengandung karakter khusus berikut, Anda harus meng-encode nama tersebut untuk transmisi. OSS hanya mendukung encoding URL.

  • Tanda kutip tunggal (' ')

  • Tanda kutip ganda (" ")

  • Ampersand (&)

  • Tanda kurung sudut (< >)

  • Koma enumerasi (、)

  • Huruf Tionghoa

Kode contoh berikut memberikan contoh cara menentukan encoding nama objek.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.net.URLDecoder;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Tentukan jumlah objek yang didaftar pada setiap halaman sebagai 200.
        int maxKeys = 200;
        // Tentukan awalan, misalnya exampledir/object.
        String keyPrefix = "exampledir/object";
        // Atur marker, misalnya objecttest.txt.
        String nextMarker = "objecttest.txt";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            ObjectListing objectListing;

            do {
                ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
                listObjectsRequest.setPrefix(keyPrefix);
                listObjectsRequest.setMaxKeys(maxKeys);
                listObjectsRequest.setMarker(nextMarker);

                // Tentukan encoding untuk nama objek.
                listObjectsRequest.setEncodingType("url");

                objectListing = ossClient.listObjects(listObjectsRequest);

                // Decode nama objek.
                for (OSSObjectSummary objectSummary: objectListing.getObjectSummaries()) {
                    System.out.println("Key:" + URLDecoder.decode(objectSummary.getKey(), "UTF-8"));
                }

                // Decode commonPrefixes.
                for (String commonPrefixes: objectListing.getCommonPrefixes()) {
                    System.out.println("CommonPrefixes:" + URLDecoder.decode(commonPrefixes, "UTF-8"));
                }

                // Decode nextMarker.
                if (objectListing.getNextMarker() != null) {
                    nextMarker = URLDecoder.decode(objectListing.getNextMarker(), "UTF-8");
                }
            } while (objectListing.isTruncated());
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar objek menggunakan ListObjectsV2Request

Anda dapat mengatur parameter ListObjectsV2Request untuk mengaktifkan fitur pendaftaran objek fleksibel, seperti mendaftar jumlah objek tertentu, mendaftar objek dengan awalan tertentu, dan mendaftar semua objek per halaman.

Tabel berikut menjelaskan parameter ListObjectsV2Request.

Parameter

Deskripsi

Metode

prefix

Awalan yang harus dimiliki oleh nama objek yang dikembalikan.

setPrefix(String prefix)

delimiter

Karakter yang digunakan untuk mengelompokkan nama objek. Semua nama objek yang mengandung string yang sama dari awalan hingga kemunculan pertama delimiter dikelompokkan sebagai satu elemen hasil di bawah CommonPrefixes. Hal ini membantu Anda menjelajahi bucket sebagai hierarki folder.

setDelimiter(String delimiter)

maxKeys

Jumlah maksimum objek yang dikembalikan. Hasil dikembalikan dalam urutan leksikografis. Nilai default adalah 100. Nilai maksimum adalah 1.000.

setMaxKeys(Integer maxKeys)

startAfter

Nama objek setelah mana pendaftaran dimulai. Parameter ini mengembalikan objek yang namanya diurutkan secara leksikografis setelah nilai startAfter.

setStartAfter(String startAfter)

continuationToken

continuationToken yang digunakan untuk operasi pendaftaran ini.

setContinuationToken(String continuationToken)

encodingType

Jenis encoding untuk nama objek dalam badan respons. Hanya encoding URL yang didukung.

setEncodingType(String encodingType)

fetchOwner

Menentukan apakah informasi pemilik objek disertakan dalam hasil pendaftaran.

setFetchOwner(boolean fetchOwner )

Mendaftar jumlah objek tertentu

Kode contoh berikut memberikan contoh cara mendaftar jumlah objek tertentu.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Atur jumlah maksimum objek.
        int maxKeys = 200;
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Daftar objek. Secara default, 100 objek dikembalikan oleh satu permintaan. Pada contoh ini, jumlah maksimum objek yang dikembalikan diatur menjadi 200.
            ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
            listObjectsV2Request.setMaxKeys(maxKeys);
            ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
            List<OSSObjectSummary> ossObjectSummaries = result.getObjectSummaries();

            for (OSSObjectSummary s : ossObjectSummaries) {
                System.out.println("\t" + s.getKey());
            }
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar objek dengan awalan tertentu

Kode contoh berikut memberikan contoh cara mendaftar objek yang mengandung awalan tertentu.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Tentukan awalan, misalnya exampledir/object.
        String prefix = "exampledir/object";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Daftar objek dengan awalan yang ditentukan.
            ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
            listObjectsV2Request.setPrefix(prefix);
            ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
            List<OSSObjectSummary> ossObjectSummaries = result.getObjectSummaries();

            for (OSSObjectSummary s : ossObjectSummaries) {
                System.out.println("\t" + s.getKey());
            }
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar objek setelah nilai startAfter tertentu

Kode contoh berikut memberikan contoh cara mendaftar objek yang namanya secara leksikografis berada setelah string startAfter tertentu.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Tentukan bahwa objek dikembalikan dalam urutan alfabet mulai dari objek yang mengikuti start-after.          
            ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
            listObjectsV2Request.setStartAfter("ex");
            ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
            List<OSSObjectSummary> ossObjectSummaries = result.getObjectSummaries();

            for (OSSObjectSummary s : ossObjectSummaries) {
                System.out.println("\t" + s.getKey());
            }
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mengembalikan informasi pemilik dalam hasil pendaftaran

Kode contoh berikut memberikan contoh cara mengembalikan informasi pemilik dalam hasil pendaftaran.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Secara default, informasi objek yang didaftar tidak menyertakan informasi pemilik. Untuk menyertakan informasi pemilik, atur parameter fetchOwner menjadi true.
            ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
            listObjectsV2Request.setFetchOwner(true);
            ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
            List<OSSObjectSummary> ossObjectSummaries = result.getObjectSummaries();

            for (OSSObjectSummary s : ossObjectSummaries) {
                System.out.println("\t" + s.getKey());
                if (s.getOwner() != null) {
                    System.out.println("owner id:" + s.getOwner().getId());
                    System.out.println("name:" + s.getOwner().getDisplayName());
                }
            }
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar semua objek per halaman

Kode contoh berikut memberikan contoh cara mendaftar semua objek dalam bucket tertentu per halaman. Jumlah objek yang didaftar pada setiap halaman ditentukan oleh parameter maxKeys.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Atur jumlah maksimum objek.
        int maxKeys = 200;
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            String nextContinuationToken = null;
            ListObjectsV2Result result = null;

            // Untuk mendaftar objek per halaman, teruskan nilai nextContinuationToken dari respons sebelumnya.
            do {
                ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName).withMaxKeys(maxKeys);
                listObjectsV2Request.setContinuationToken(nextContinuationToken);
                result = ossClient.listObjectsV2(listObjectsV2Request);

                List<OSSObjectSummary> sums = result.getObjectSummaries();
                for (OSSObjectSummary s : sums) {
                    System.out.println("\t" + s.getKey());
                }

                nextContinuationToken = result.getNextContinuationToken();

            } while (result.isTruncated());
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar objek dengan awalan tertentu per halaman

Kode contoh berikut memberikan contoh cara mendaftar objek yang mengandung awalan tertentu per halaman.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Tentukan awalan, misalnya exampledir/object.
        String keyPrefix = "exampledir/object";
        // Atur jumlah maksimum objek.
        int maxKeys = 200;
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            String nextContinuationToken = null;
            ListObjectsV2Result result = null;

            // Daftar objek dengan awalan yang ditentukan per halaman.
            do {
                ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName).withMaxKeys(maxKeys);
                listObjectsV2Request.setPrefix(keyPrefix);
                listObjectsV2Request.setContinuationToken(nextContinuationToken);
                result = ossClient.listObjectsV2(listObjectsV2Request);

                List<OSSObjectSummary> sums = result.getObjectSummaries();
                for (OSSObjectSummary s : sums) {
                    System.out.println("\t" + s.getKey());
                }

                nextContinuationToken = result.getNextContinuationToken();

            } while (result.isTruncated());
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Menentukan encoding nama objek

Kode contoh berikut memberikan contoh cara menentukan encoding nama objek.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.net.URLDecoder;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Tentukan awalan, misalnya exampledir/object.
        String keyPrefix = "exampledir/object";
        // Atur jumlah maksimum objek.
        int maxKeys = 200;
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            String nextContinuationToken = null;
            ListObjectsV2Result result = null;

            // Jika Anda menentukan bahwa hasil yang dikembalikan di-encode URL, Anda harus melakukan decode URL terhadap nilai prefix, delimiter, startAfter, key, dan commonPrefix dalam hasil.
            do {
                ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName).withMaxKeys(maxKeys);
                listObjectsV2Request.setPrefix(keyPrefix);
                listObjectsV2Request.setEncodingType("url");
                listObjectsV2Request.setContinuationToken(nextContinuationToken);
                result = ossClient.listObjectsV2(listObjectsV2Request);

                // Decode prefix.
                if (result.getPrefix() != null) {
                    String prefix = URLDecoder.decode(result.getPrefix(), "UTF-8");
                    System.out.println("prefix: " + prefix);
                }

                // Decode delimiter.
                if (result.getDelimiter() != null) {
                    String delimiter = URLDecoder.decode(result.getDelimiter(), "UTF-8");
                    System.out.println("delimiter: " + delimiter);
                }

                // Decode startAfter.
                if (result.getStartAfter() != null) {
                    String startAfter = URLDecoder.decode(result.getStartAfter(), "UTF-8");
                    System.out.println("startAfter: " + startAfter);
                }

                // Decode nama objek.
                for (OSSObjectSummary s : result.getObjectSummaries()) {
                    String decodedKey = URLDecoder.decode(s.getKey(), "UTF-8");
                    System.out.println("key: " + decodedKey);
                }

                // Decode commonPrefixes.
                for (String commonPrefix: result.getCommonPrefixes()) {
                    String decodeCommonPrefix = URLDecoder.decode(commonPrefix, "UTF-8");
                    System.out.println("CommonPrefix:" + decodeCommonPrefix);
                }

                nextContinuationToken = result.getNextContinuationToken();

            } while (result.isTruncated());
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Fitur folder

OSS menggunakan struktur datar untuk menyimpan objek. Semua elemen disimpan sebagai objek. Membuat folder sama dengan membuat objek berukuran nol byte yang diakhiri dengan garis miring (/). Konsol OSS menampilkan objek yang namanya diakhiri dengan garis miring (/) sebagai folder. Untuk kode contoh lengkap pembuatan folder, lihat contoh GitHub.

Anda dapat menggunakan parameter delimiter dan prefix untuk mensimulasikan fitur direktori:

  • Jika Anda mengatur parameter `prefix` ke nama folder, objek yang namanya diawali dengan awalan ini akan didaftar. Hal ini secara rekursif mendaftar semua objek dan subdirektori dalam folder tersebut.

  • Jika Anda mengatur parameter `prefix` dan mengatur parameter `delimiter` ke garis miring (/), hanya objek dan subdirektori di tingkat atas folder yang didaftar. Subdirektori dikembalikan dalam elemen `CommonPrefixes`, dan objek serta folder dalam subdirektori tersebut tidak didaftar.

Asumsikan sebuah bucket berisi objek oss.jpg, fun/test.jpg, fun/movie/001.avi, dan fun/movie/007.avi, dan pemisah folder adalah garis miring (/). Contoh berikut menunjukkan cara mendaftar objek dengan mensimulasikan direktori.

Mendaftar semua objek dalam bucket

  • Mendaftar semua objek dalam bucket menggunakan metode GetBucket (ListObjects)

    import com.aliyun.oss.*;
    import com.aliyun.oss.common.auth.*;
    import com.aliyun.oss.common.comm.SignVersion;
    import com.aliyun.oss.model.*;
    
    public class Demo {
        public static void main(String[] args) throws Exception {
            // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Tentukan nama bucket, misalnya examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
            String region = "cn-hangzhou";
    
            // Buat instans OSSClient.
            // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
            OSS ossClient = OSSClientBuilder.create()
            .endpoint(endpoint)
            .credentialsProvider(credentialsProvider)
            .clientConfiguration(clientBuilderConfiguration)
            .region(region)               
            .build();
    
            try {
                // Buat permintaan ListObjectsRequest.
                ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
    
                // Daftar objek.
                ObjectListing listing = ossClient.listObjects(listObjectsRequest);
    
                // Telusuri semua objek.
                System.out.println("Objects:");
                for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
                    System.out.println(objectSummary.getKey());
                }
    
                // Telusuri semua awalan umum.
                System.out.println("CommonPrefixes:");
                for (String commonPrefix : listing.getCommonPrefixes()) {
                    System.out.println(commonPrefix);
                }
            } catch (OSSException oe) {
                System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                        + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
                System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
                System.out.println("Kode Kesalahan:" + oe.getErrorCode());
                System.out.println("ID Permintaan:" + oe.getRequestId());
                System.out.println("ID Host:" + oe.getHostId());
            } catch (ClientException ce) {
                System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Kesalahan:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }
  • Mendaftar semua objek dalam bucket menggunakan metode GetBucketV2 (ListObjectsV2)

    import com.aliyun.oss.*;
    import com.aliyun.oss.common.auth.*;
    import com.aliyun.oss.common.comm.SignVersion;
    import com.aliyun.oss.model.*;
    
    public class Demo {
        public static void main(String[] args) throws Exception {
            // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Tentukan nama bucket, misalnya examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
            String region = "cn-hangzhou";
    
            // Buat instans OSSClient.
            // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
            OSS ossClient = OSSClientBuilder.create()
            .endpoint(endpoint)
            .credentialsProvider(credentialsProvider)
            .clientConfiguration(clientBuilderConfiguration)
            .region(region)               
            .build();
    
            try {
                // Daftar objek.
                ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
                ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
    
                // Telusuri objek.
                System.out.println("Objects:");
                for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
                    System.out.println(objectSummary.getKey());
                }
    
                // Telusuri awalan umum.
                System.out.println("CommonPrefixes:");
                for (String commonPrefix : result.getCommonPrefixes()) {
                    System.out.println(commonPrefix);
                }
            } catch (OSSException oe) {
                System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                        + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
                System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
                System.out.println("Kode Kesalahan:" + oe.getErrorCode());
                System.out.println("ID Permintaan:" + oe.getRequestId());
                System.out.println("ID Host:" + oe.getHostId());
            } catch (ClientException ce) {
                System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Kesalahan:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }
  • Respons

    Respons berikut dikembalikan oleh dua metode di atas.

    Objects:
    fun/movie/001.avi
    fun/movie/007.avi
    fun/test.jpg
    oss.jpg
    CommonPrefixes:                    

Mendaftar semua objek dalam direktori tertentu

  • Mendaftar semua objek dalam direktori tertentu menggunakan metode GetBucket (ListObjects)

    import com.aliyun.oss.*;
    import com.aliyun.oss.common.auth.*;
    import com.aliyun.oss.common.comm.SignVersion;
    import com.aliyun.oss.model.*;
    
    public class Demo {
        public static void main(String[] args) throws Exception {
            // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Tentukan nama bucket, misalnya examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
            String region = "cn-hangzhou";
    
            // Buat instans OSSClient.
            // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
            OSS ossClient = OSSClientBuilder.create()
            .endpoint(endpoint)
            .credentialsProvider(credentialsProvider)
            .clientConfiguration(clientBuilderConfiguration)
            .region(region)               
            .build();
    
            try {
                // Buat permintaan ListObjectsRequest.
                ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
                // Atur parameter prefix untuk mendapatkan semua objek dalam direktori fun.
                listObjectsRequest.setPrefix("fun/");
    
                // Secara rekursif mendaftar semua objek dalam direktori fun.
                ObjectListing listing = ossClient.listObjects(listObjectsRequest);
    
                // Telusuri semua objek.
                System.out.println("Objects:");
                for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
                    System.out.println(objectSummary.getKey());
                }
    
                // Telusuri semua awalan umum.
                System.out.println("\nCommonPrefixes:");
                for (String commonPrefix : listing.getCommonPrefixes()) {
                    System.out.println(commonPrefix);
                }
            } catch (OSSException oe) {
                System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                        + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
                System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
                System.out.println("Kode Kesalahan:" + oe.getErrorCode());
                System.out.println("ID Permintaan:" + oe.getRequestId());
                System.out.println("ID Host:" + oe.getHostId());
            } catch (ClientException ce) {
                System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Kesalahan:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }
  • Mendaftar semua objek dalam direktori tertentu menggunakan metode GetBucketV2 (ListObjectsV2)

    import com.aliyun.oss.*;
    import com.aliyun.oss.common.auth.*;
    import com.aliyun.oss.common.comm.SignVersion;
    import com.aliyun.oss.model.*;
    
    public class Demo {
        public static void main(String[] args) throws Exception {
            // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Tentukan nama bucket, misalnya examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
            String region = "cn-hangzhou";
    
            // Buat instans OSSClient.
            // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
            OSS ossClient = OSSClientBuilder.create()
            .endpoint(endpoint)
            .credentialsProvider(credentialsProvider)
            .clientConfiguration(clientBuilderConfiguration)
            .region(region)               
            .build();
    
            try {
                // Buat permintaan ListObjectsV2Request.
                ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
    
                // Atur parameter prefix untuk mendapatkan objek dalam direktori fun.
                listObjectsV2Request.setPrefix("fun/");
    
                // Mulai permintaan pendaftaran.
                ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
    
                // Telusuri objek.
                System.out.println("Objects:");
                for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
                    System.out.println(objectSummary.getKey());
                }
    
                // Telusuri awalan umum.
                System.out.println("\nCommonPrefixes:");
                for (String commonPrefix : result.getCommonPrefixes()) {
                    System.out.println(commonPrefix);
                }
            } catch (OSSException oe) {
                System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                        + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
                System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
                System.out.println("Kode Kesalahan:" + oe.getErrorCode());
                System.out.println("ID Permintaan:" + oe.getRequestId());
                System.out.println("ID Host:" + oe.getHostId());
            } catch (ClientException ce) {
                System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Kesalahan:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }
  • Respons berikut dikembalikan oleh dua metode di atas.

    Objects:
    fun/movie/001.avi
    fun/movie/007.avi
    fun/test.jpg
    CommonPrefixes:                    

Mendaftar objek dan subdirektori dalam direktori

  • Mendaftar objek dan subdirektori dalam direktori menggunakan metode GetBucket (ListObjects)

    import com.aliyun.oss.*;
    import com.aliyun.oss.common.auth.*;
    import com.aliyun.oss.common.comm.SignVersion;
    import com.aliyun.oss.model.*;
    
    public class Demo {
        public static void main(String[] args) throws Exception {
            // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Tentukan nama bucket, misalnya examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
            String region = "cn-hangzhou";
    
            // Buat instans OSSClient.
            // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
            OSS ossClient = OSSClientBuilder.create()
            .endpoint(endpoint)
            .credentialsProvider(credentialsProvider)
            .clientConfiguration(clientBuilderConfiguration)
            .region(region)               
            .build();
    
            try {
                // Buat permintaan ListObjectsRequest.
                ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
    
                // Atur pemisah folder ke garis miring (/).
                listObjectsRequest.setDelimiter("/");
    
                // Daftar semua objek dan folder dalam direktori fun.
                listObjectsRequest.setPrefix("fun/");
    
                ObjectListing listing = ossClient.listObjects(listObjectsRequest);
    
                // Telusuri semua objek.
                System.out.println("Objects:");
                // Daftar objectSummaries berisi objek dalam direktori fun.
                for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
                    System.out.println(objectSummary.getKey());
                }
    
                // Telusuri semua awalan umum.
                System.out.println("\nCommonPrefixes:");
                // Daftar commonPrefixes menampilkan semua subdirektori dalam direktori fun. Objek fun/movie/001.avi dan fun/movie/007.avi tidak ada dalam daftar karena berada dalam direktori movie di bawah folder fun.
                for (String commonPrefix : listing.getCommonPrefixes()) {
                    System.out.println(commonPrefix);
                }
            } catch (OSSException oe) {
                System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                        + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
                System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
                System.out.println("Kode Kesalahan:" + oe.getErrorCode());
                System.out.println("ID Permintaan:" + oe.getRequestId());
                System.out.println("ID Host:" + oe.getHostId());
            } catch (ClientException ce) {
                System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Kesalahan:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }
  • Mendaftar objek dan subdirektori dalam direktori menggunakan metode GetBucketV2 (ListObjectsV2)

    import com.aliyun.oss.*;
    import com.aliyun.oss.common.auth.*;
    import com.aliyun.oss.common.comm.SignVersion;
    import com.aliyun.oss.model.*;
    
    public class Demo {
        public static void main(String[] args) throws Exception {
            // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Tentukan nama bucket, misalnya examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
            String region = "cn-hangzhou";
    
            // Buat instans OSSClient.
            // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
            OSS ossClient = OSSClientBuilder.create()
            .endpoint(endpoint)
            .credentialsProvider(credentialsProvider)
            .clientConfiguration(clientBuilderConfiguration)
            .region(region)               
            .build();
    
            try {
                // Buat permintaan ListObjectsV2Request.
                ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
    
                // Atur parameter prefix untuk mendapatkan semua objek dan folder dalam direktori fun.
                listObjectsV2Request.setPrefix("fun/");
    
                // Atur pemisah folder ke garis miring (/).
                listObjectsV2Request.setDelimiter("/");
    
                // Mulai permintaan pendaftaran.
                ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
    
                // Telusuri objek.
                System.out.println("Objects:");
                // Daftar objectSummaries berisi objek dalam direktori fun.
                for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
                    System.out.println(objectSummary.getKey());
                }
    
                // Telusuri awalan umum.
                System.out.println("\nCommonPrefixes:");
                // Daftar commonPrefixes menampilkan semua subdirektori dalam direktori fun. Objek fun/movie/001.avi dan fun/movie/007.avi tidak ada dalam daftar karena berada dalam direktori movie di bawah folder fun.
                for (String commonPrefix : result.getCommonPrefixes()) {
                    System.out.println(commonPrefix);
                }
            } catch (OSSException oe) {
                System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                        + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
                System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
                System.out.println("Kode Kesalahan:" + oe.getErrorCode());
                System.out.println("ID Permintaan:" + oe.getRequestId());
                System.out.println("ID Host:" + oe.getHostId());
            } catch (ClientException ce) {
                System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Kesalahan:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }
  • Berikut adalah output pendaftaran file dan subdirektori dalam direktori tertentu menggunakan dua metode di atas:

    Objects:
    fun/test.jpg
    
    CommonPrefixes:
    fun/movie/                    

Mendapatkan ukuran objek dalam direktori tertentu

  • Mendapatkan ukuran objek dalam direktori tertentu menggunakan metode GetBucket (ListObjects)

    import com.aliyun.oss.*;
    import com.aliyun.oss.common.auth.CredentialsProviderFactory;
    import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
    import com.aliyun.oss.common.comm.SignVersion;
    import com.aliyun.oss.model.OSSObjectSummary;
    import com.aliyun.oss.model.ObjectListing;
    
    public class Demo {
        public static void main(String[] args) throws Exception {
            // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Tentukan nama bucket, misalnya examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
            String region = "cn-hangzhou";
            // Tentukan awalan, misalnya exampledir/. Jika Anda ingin menjelajahi folder di direktori root, biarkan parameter ini kosong.
            String prefix = "exampledir/";
    
            // Buat instans OSSClient.
            // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
            OSS ossClient = OSSClientBuilder.create()
                    .endpoint(endpoint)
                    .credentialsProvider(credentialsProvider)
                    .clientConfiguration(clientBuilderConfiguration)
                    .region(region)
                    .build();
    
            try {
                long totalSize = 0;
                int totalCount = 0;
                String nextMarker = null;
                final int maxKeys = 1000;
    
                do {
                    ObjectListing objectListing = ossClient.listObjects(bucketName, prefix);
                    for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) {
                        totalSize += objectSummary.getSize();
                        totalCount++;
                        // Cetak nama dan ukuran setiap file.
                        System.out.println("File: " + objectSummary.getKey() + " | Size: " + objectSummary.getSize() + " bytes (" + formatSize(objectSummary.getSize()) + ")");
                    }
                    nextMarker = objectListing.getNextMarker();
                } while (nextMarker != null && !nextMarker.isEmpty());
    
                System.out.println("Folder: " + prefix);
                System.out.println("Total objects: " + totalCount);
                System.out.println("Total size (bytes): " + totalSize);
                System.out.println("Total size (human readable): " + formatSize(totalSize));
            } catch (OSSException oe) {
                System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                        + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
                System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
                System.out.println("Kode Kesalahan:" + oe.getErrorCode());
                System.out.println("ID Permintaan:" + oe.getRequestId());
                System.out.println("ID Host:" + oe.getHostId());
            } catch (ClientException ce) {
                System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Kesalahan:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    
        // Konversi byte ke format yang mudah dibaca.
        public static String formatSize(long size) {
            String[] units = {"B", "KB", "MB", "GB", "TB", "PB"};
            int unitIndex = 0;
            double sizeD = size;
            while (sizeD >= 1024 && unitIndex < units.length - 1) {
                sizeD /= 1024;
                unitIndex++;
            }
            return String.format("%.2f %s", sizeD, units[unitIndex]);
        }
    }
    
  • Mendapatkan ukuran objek dalam direktori tertentu menggunakan metode GetBucketV2 (ListObjectsV2)

    import com.aliyun.oss.*;
    import com.aliyun.oss.common.auth.CredentialsProviderFactory;
    import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
    import com.aliyun.oss.common.comm.SignVersion;
    import com.aliyun.oss.model.ListObjectsV2Request;
    import com.aliyun.oss.model.ListObjectsV2Result;
    import com.aliyun.oss.model.OSSObjectSummary;
    
    public class Demo {
        public static void main(String[] args) throws Exception {
            // Contoh ini menggunakan titik akhir wilayah China (Hangzhou). Tentukan titik akhir yang sebenarnya.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Tentukan nama bucket, misalnya examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
            String region = "cn-hangzhou";
            // Tentukan awalan, misalnya exampledir/. Jika Anda ingin menjelajahi folder di direktori root, biarkan parameter ini kosong.
            String prefix = "exampledir/";
    
            // Buat instans OSSClient.
            // Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepas sumber daya.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
            OSS ossClient = OSSClientBuilder.create()
                    .endpoint(endpoint)
                    .credentialsProvider(credentialsProvider)
                    .clientConfiguration(clientBuilderConfiguration)
                    .region(region)
                    .build();
    
            try {
                long totalSize = 0;
                int totalCount = 0;
                String continuationToken = null;
                final int maxKeys = 1000;
    
                do {
                    ListObjectsV2Request request = new ListObjectsV2Request(bucketName)
                            .withPrefix(prefix)
                            .withMaxKeys(maxKeys)
                            .withContinuationToken(continuationToken);
    
                    ListObjectsV2Result result = ossClient.listObjectsV2(request);
    
                    for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
                        totalSize += objectSummary.getSize();
                        totalCount++;
                        System.out.println("File: " + objectSummary.getKey() + " | Size: " + objectSummary.getSize() + " bytes (" + formatSize(objectSummary.getSize()) + ")");
                    }
    
                    continuationToken = result.getNextContinuationToken();
                } while (continuationToken != null);
    
                System.out.println("\nFolder: " + prefix);
                System.out.println("Total objects: " + totalCount);
                System.out.println("Total size (bytes): " + totalSize);
                System.out.println("Total size (human readable): " + formatSize(totalSize));
            }catch (OSSException oe) {
                System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                        + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
                System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
                System.out.println("Kode Kesalahan:" + oe.getErrorCode());
                System.out.println("ID Permintaan:" + oe.getRequestId());
                System.out.println("ID Host:" + oe.getHostId());
            } catch (ClientException ce) {
                System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Kesalahan:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    
        // Konversi byte ke format yang mudah dibaca.
        public static String formatSize(long size) {
            String[] units = {"B", "KB", "MB", "GB", "TB", "PB"};
            int unitIndex = 0;
            double sizeD = size;
            while (sizeD >= 1024 && unitIndex < units.length - 1) {
                sizeD /= 1024;
                unitIndex++;
            }
            return String.format("%.2f %s", sizeD, units[unitIndex]);
        }
    }
    

Referensi