All Products
Search
Document Center

Object Storage Service:Daftar objek (Java SDK V1)

Last Updated:Mar 28, 2026

Pelajari cara mendaftar semua objek, sejumlah objek tertentu, dan objek dengan awalan tertentu dalam bucket OSS.

Catatan

  • Dalam 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 tentang wilayah dan titik akhir yang didukung, lihat Wilayah dan titik akhir.

  • Dalam topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi selengkapnya, lihat Konfigurasikan kredensial akses.

  • Topik ini menunjukkan pembuatan instans OSSClient dengan titik akhir OSS. Untuk konfigurasi alternatif, seperti menggunakan domain kustom atau mengautentikasi dengan kredensial dari Security Token Service (STS), lihat Konfigurasi client.

  • Untuk mendaftar objek, Anda harus memiliki izin oss:ListObjects. Untuk detailnya, lihat Lampirkan kebijakan kustom ke Pengguna RAM.

Latar Belakang

Anda dapat memanggil operasi GetBucket (ListObjects) atau GetBucketV2 (ListObjectsV2) untuk mendaftar hingga 1.000 objek dalam satu bucket dalam satu panggilan. Anda dapat menentukan parameter untuk memfilter hasilnya. Misalnya, Anda dapat mendaftar objek dari titik awal tertentu, mendaftar objek dan subdirektori dalam direktori tertentu, atau menggunakan pagination untuk mendaftar lebih dari 1.000 objek. Perbedaan utama antara kedua operasi ini adalah sebagai berikut:

  • Operasi GetBucket (ListObjects) secara default mengembalikan informasi pemilik.

  • Untuk menyertakan informasi pemilik dalam respons dari operasi GetBucketV2 (ListObjectsV2), Anda harus mengatur parameter fetchOwner.

    Catatan

    Gunakan operasi GetBucketV2 (ListObjectsV2) untuk mendaftar objek di bucket yang telah diaktifkan fitur pengendalian versi.

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

  • Mendaftar objek menggunakan operasi GetBucket (ListObjects)

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

    • ObjectListing listObjects(String bucketName): Secara default mendaftar hingga 100 objek dalam bucket.

    • ObjectListing listObjects(String bucketName, String prefix): Secara default mendaftar hingga 100 objek dalam bucket yang memiliki awalan tertentu.

    • ObjectListing listObjects(ListObjectsRequest listObjectsRequest): Menyediakan beberapa opsi filter untuk kueri fleksibel.

    Tabel berikut menjelaskan parameter untuk operasi GetBucket (ListObjects).

    Parameter

    Deskripsi

    Metode

    objectSummaries

    Daftar metadata objek.

    List<OSSObjectSummary> getObjectSummaries()

    prefix

    Awalan yang harus dimiliki oleh nama objek yang dikembalikan.

    String getPrefix()

    delimiter

    Karakter yang digunakan untuk mengelompokkan nama objek.

    String getDelimiter()

    marker

    Kunci objek tempat memulai daftar.

    String getMarker()

    maxKeys

    Jumlah maksimum objek yang akan dikembalikan.

    int getMaxKeys()

    nextMarker

    Kunci objek yang digunakan sebagai penanda untuk permintaan berikutnya. Parameter ini hanya muncul ketika respons terpotong.

    String getNextMarker()

    isTruncated

    Menunjukkan apakah daftar objek yang dikembalikan terpotong.

    • false: Daftar objek tidak terpotong.

    • true: Daftar objek terpotong.

    boolean isTruncated()

    commonPrefixes

    Kumpulan awalan nama objek yang dikelompokkan berdasarkan delimiter yang ditentukan.

    List<String> getCommonPrefixes()

    encodingType

    Jenis encoding nama objek dalam respons.

    String getEncodingType()

  • Mendaftar objek menggunakan operasi GetBucketV2 (ListObjectsV2)

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

    • ListObjectsV2Result listObjectsV2(String bucketName): Secara default mendaftar hingga 100 objek dalam bucket.

    • ListObjectsV2Result listObjectsV2(String bucketName, String prefix): Secara default mendaftar hingga 100 objek dalam bucket yang memiliki awalan tertentu.

    • ListObjectsV2Result listObjectsV2(ListObjectsRequest listObjectsRequest): Menyediakan beberapa opsi filter untuk kueri fleksibel.

    Tabel berikut menjelaskan parameter untuk operasi GetBucketV2 (ListObjectsV2).

    Parameter

    Deskripsi

    Metode

    objectSummaries

    Daftar metadata objek.

    List<OSSObjectSummary> getObjectSummaries()

    prefix

    Awalan yang harus dimiliki oleh nama objek yang dikembalikan.

    String getPrefix()

    delimiter

    Karakter yang digunakan untuk mengelompokkan nama objek.

    String getDelimiter()

    startAfter

    Kunci objek tempat memulai daftar setelahnya.

    String getStartAfter()

    maxKeys

    Jumlah maksimum objek yang akan dikembalikan.

    int getMaxKeys()

    continuationToken

    Token dari respons terpotong sebelumnya yang menentukan tempat melanjutkan daftar.

    String getContinuationToken()

    nextContinuationToken

    Token untuk mengambil halaman hasil berikutnya. Parameter ini hanya muncul ketika respons terpotong.

    String getNextContinuationToken()

    isTruncated

    Menunjukkan apakah daftar objek yang dikembalikan terpotong.

    • false: Daftar objek tidak terpotong.

    • true: Daftar objek terpotong.

    boolean isTruncated()

    commonPrefixes

    Kumpulan awalan nama objek yang dikelompokkan berdasarkan delimiter yang ditentukan.

    List<String> getCommonPrefixes()

    encodingType

    Jenis encoding nama objek dalam respons.

    String getEncodingType()

    fetchOwner

    Menentukan apakah informasi pemilik disertakan dalam respons.

    • true: Informasi pemilik disertakan dalam respons.

    • false: Informasi pemilik tidak disertakan dalam respons.

    String getFetchOwner()

Mendaftar objek

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

GetBucket (ListObjects)

Kode contoh berikut menunjukkan cara memanggil operasi GetBucket (ListObjects) untuk mendaftar objek dalam bucket. Secara default, setiap 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 untuk wilayah China (Hangzhou). Gunakan titik akhir aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan awalan objek. Contoh: 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 melepaskan sumber dayanya.
        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 keyPrefix tidak diatur, semua objek dalam bucket akan didaftar. Jika keyPrefix diatur, hanya objek dengan awalan yang ditentukan yang 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. Ini berarti permintaan Anda mencapai OSS tetapi ditolak dengan error.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + 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 client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}                  

GetBucketV2 (ListObjectsV2)

Kode contoh berikut menunjukkan cara memanggil operasi GetBucketV2 (ListObjectsV2) untuk mendaftar objek dalam bucket. Secara default, setiap 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 untuk wilayah China (Hangzhou). Gunakan titik akhir aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan awalan objek. Contoh: 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 melepaskan sumber dayanya.
        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 keyPrefix tidak diatur, semua objek dalam bucket akan didaftar. Jika keyPrefix diatur, hanya objek dengan awalan yang ditentukan yang 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. Ini berarti permintaan Anda mencapai OSS tetapi ditolak dengan error.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + 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 client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar objek dengan menggunakan ListObjectsRequest

Atur parameter ListObjectsRequest untuk melakukan kueri fleksibel. Tabel berikut menjelaskan setiap parameter.

Parameter

Deskripsi

Metode

prefix

Membatasi respons hanya pada objek yang namanya diawali dengan awalan yang ditentukan.

setPrefix(String prefix)

delimiter

Karakter untuk mengelompokkan kunci objek. Kunci yang berisi string yang sama dari awalan hingga delimiter pertama dikelompokkan menjadi satu elemen CommonPrefixes. Gunakan ini untuk mendaftar objek secara hierarkis, seperti dalam sistem file.

setDelimiter(String delimiter)

marker

Menentukan kunci tempat memulai daftar. Respons hanya mencakup objek dengan kunci yang muncul secara leksikografis setelah penanda yang ditentukan.

setMarker(String marker)

maxKeys

Mengatur jumlah maksimum objek yang dikembalikan dalam respons. Nilai default adalah 100. Nilai maksimum adalah 1000.

setMaxKeys(Integer maxKeys)

encodingType

Menentukan jenis encoding untuk kunci objek dalam respons. Satu-satunya nilai yang valid adalah url.

setEncodingType(String encodingType)

Mendaftar jumlah objek tertentu

Kode contoh berikut menunjukkan 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 untuk wilayah China (Hangzhou). Tentukan titik akhir untuk wilayah Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode, konfigurasikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Misalnya, examplebucket.
        String bucketName = "examplebucket";
        // Tentukan wilayah bucket. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur parameter ini menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        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 yang akan dikembalikan.
            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 respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + 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 client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}                    

Mendaftar objek dengan awalan tertentu

Kode contoh berikut menunjukkan cara mendaftar objek dengan 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 untuk wilayah China (Hangzhou). Tentukan titik akhir untuk wilayah Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode, konfigurasikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Misalnya, examplebucket.
        String bucketName = "examplebucket";
        // Tentukan awalan objek. Misalnya, exampledir/object.
        String keyPrefix = "exampledir/object";
        // Tentukan wilayah bucket. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur parameter ini menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        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. Secara default, 100 objek dikembalikan.
            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 respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + 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 client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}                    

Mendaftar objek setelah penanda tertentu

Kode contoh berikut menunjukkan cara mendaftar objek yang kuncinya muncul secara leksikografis setelah penanda 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 untuk wilayah China (Hangzhou). Tentukan titik akhir untuk wilayah Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode, konfigurasikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Misalnya, examplebucket.
        String bucketName = "examplebucket";
        // Tentukan penanda. Respons hanya mencakup objek dengan kunci yang muncul secara leksikografis setelah penanda.  
        String marker = "ex";
        // Tentukan wilayah bucket. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur parameter ini menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        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 penanda yang ditentukan. Secara default, 100 objek dikembalikan.
            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 respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + 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 client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar semua objek menggunakan pagination

Kode contoh berikut menunjukkan cara mendaftar semua objek dalam bucket menggunakan pagination. Parameter maxKeys menentukan jumlah objek yang dikembalikan pada setiap 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 untuk wilayah China (Hangzhou). Tentukan titik akhir untuk wilayah Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode, konfigurasikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Misalnya, examplebucket.
        String bucketName = "examplebucket";
        // Atur jumlah objek yang dikembalikan per halaman menjadi 200.
        int maxKeys = 200;
        // Tentukan wilayah bucket. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur parameter ini menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        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 respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + 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 client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar objek dengan awalan menggunakan pagination

Kode contoh berikut menunjukkan cara menggunakan pagination untuk mendaftar objek dengan 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 untuk wilayah China (Hangzhou). Tentukan titik akhir untuk wilayah Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode, konfigurasikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Misalnya, examplebucket.
        String bucketName = "examplebucket";
        // Atur jumlah objek yang dikembalikan per halaman menjadi 200.
        int maxKeys = 200;
        // Tentukan awalan objek. Misalnya, exampledir/object.
        String keyPrefix = "exampledir/object";
        // Tentukan objek tempat memulai daftar. Misalnya, objecttest.txt.
        String nextMarker = "objecttest.txt";
        // Tentukan wilayah bucket. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur parameter ini menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        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 respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + 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 client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Menentukan encoding nama objek

Jika nama objek berisi salah satu karakter berikut, Anda harus melakukan URL-encode nama tersebut sebelum transmisi. OSS hanya mendukung encoding URL.

  • Tanda petik tunggal (')

  • Tanda petik ganda (")

  • Ampersand (&)

  • Tanda kurung sudut (< >)

  • Koma enumerasi Tiongkok ()

  • Karakter Tiongkok

Kode berikut menunjukkan cara menentukan encoding untuk 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 untuk wilayah China (Hangzhou). Tentukan titik akhir untuk wilayah Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode, konfigurasikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Misalnya, examplebucket.
        String bucketName = "examplebucket";
        // Atur jumlah objek yang dikembalikan per halaman menjadi 200.
        int maxKeys = 200;
        // Tentukan awalan objek. Misalnya, exampledir/object.
        String keyPrefix = "exampledir/object";
        // Tentukan objek tempat memulai daftar. Misalnya, objecttest.txt.
        String nextMarker = "objecttest.txt";
        // Tentukan wilayah bucket. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur parameter ini menjadi cn-hangzhou.
        String region = "cn-hangzhou";

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

        try {
            ObjectListing

Mendaftar objek menggunakan ListObjectsV2Request

Atur parameter dalam ListObjectsV2Request untuk kueri fleksibel. Misalnya, Anda dapat mendaftar jumlah objek tertentu, objek dengan awalan tertentu, atau semua objek dalam bucket menggunakan pagination.

Tabel berikut menjelaskan parameter untuk ListObjectsV2Request.

Parameter

Deskripsi

Metode

prefix

Menentukan awalan yang harus dimiliki oleh kunci objek yang dikembalikan.

setPrefix(String prefix)

delimiter

Karakter, seperti garis miring maju (/), yang digunakan untuk mengelompokkan kunci objek. Kunci yang memiliki string umum antara prefix yang ditentukan dan kemunculan pertama delimiter dikelompokkan menjadi satu elemen CommonPrefixes. Hal ini memungkinkan Anda menjelajahi objek secara hierarkis, mirip dengan sistem file.

setDelimiter(String delimiter)

maxKeys

Jumlah maksimum objek yang dikembalikan dalam satu respons. Objek dikembalikan dalam urutan leksikografis. Default adalah 100, dan maksimum adalah 1.000.

setMaxKeys(Integer maxKeys)

startAfter

Menentukan kunci tempat memulai daftar. Respons hanya mencakup objek dengan kunci yang muncul secara leksikografis setelah nilai ini.

setStartAfter(String startAfter)

continuationToken

Token dari respons terpotong sebelumnya. Menentukan token ini akan mengambil halaman hasil berikutnya.

setContinuationToken(String continuationToken)

encodingType

Menentukan jenis encoding untuk kunci objek dalam respons. Satu-satunya nilai yang valid adalah url.

setEncodingType(String encodingType)

fetchOwner

Menentukan apakah informasi pemilik objek disertakan dalam respons.

setFetchOwner(boolean fetchOwner )

Daftar sejumlah objek tertentu

Kode berikut 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 berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti dengan titik akhir aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Ganti dengan nama bucket Anda. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Atur jumlah maksimum objek yang akan dikembalikan.
        int maxKeys = 200;
        // Tentukan wilayah tempat bucket berada. Wilayah China (Hangzhou) digunakan sebagai contoh.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        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, satu permintaan mengembalikan hingga 100 objek. Contoh ini mengatur jumlah maksimum objek yang dikembalikan 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 respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + 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 client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar objek dengan awalan

Kode berikut mendaftar objek dengan 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 berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti dengan titik akhir aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Ganti dengan nama bucket Anda. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan awalan objek. Contoh: exampledir/object.
        String prefix = "exampledir/object";
        // Tentukan wilayah tempat bucket berada. Wilayah China (Hangzhou) digunakan sebagai contoh.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        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 memiliki 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 respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + 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 client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar objek mulai setelah kunci tertentu

Kode berikut mendaftar objek mulai setelah kunci tertentu dengan menggunakan parameter startAfter.

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 berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti dengan titik akhir aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Ganti dengan nama bucket Anda. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan wilayah tempat bucket berada. Wilayah China (Hangzhou) digunakan sebagai contoh.
        String region = "cn-hangzhou";

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

        try {
            // Respons hanya mencakup objek dengan kunci yang muncul secara leksikografis setelah nilai startAfter.
            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 respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + 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 client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Menyertakan informasi pemilik dalam hasil

Kode berikut menyertakan informasi pemilik dalam hasil daftar.

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 berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti dengan titik akhir aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Ganti dengan nama bucket Anda. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan wilayah tempat bucket berada. Wilayah China (Hangzhou) digunakan sebagai contoh.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        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 pemilik tidak disertakan dalam respons. Untuk menyertakannya, 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 respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + 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 client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar semua objek per halaman

Kode berikut mendaftar semua objek dalam bucket per halaman. Parameter maxKeys menentukan jumlah objek yang dikembalikan 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 berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti dengan titik akhir aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Ganti dengan nama bucket Anda. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Atur jumlah maksimum objek yang akan dikembalikan.
        int maxKeys = 200;
        // Tentukan wilayah tempat bucket berada. Wilayah China (Hangzhou) digunakan sebagai contoh.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        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, berikan nextContinuationToken dari respons sebelumnya ke permintaan berikutnya.
            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 respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + 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 client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Mendaftar objek dengan awalan per halaman

Kode berikut mendaftar objek dengan 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 berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti dengan titik akhir aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Ganti dengan nama bucket Anda. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan awalan objek. Contoh: exampledir/object.
        String keyPrefix = "exampledir/object";
        // Atur jumlah maksimum objek yang akan dikembalikan.
        int maxKeys = 200;
        // Tentukan wilayah tempat bucket berada. Wilayah China (Hangzhou) digunakan sebagai contoh.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        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 yang memiliki 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 respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + 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 client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Menentukan encoding kunci objek

Kode berikut menunjukkan cara menentukan encoding untuk kunci 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 berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti dengan titik akhir aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Ganti dengan nama bucket Anda. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan awalan objek. Contoh: exampledir/object.
        String keyPrefix = "exampledir/object";
        // Atur jumlah maksimum objek yang akan dikembalikan.
        int maxKeys = 200;
        // Tentukan wilayah tempat bucket berada. Wilayah China (Hangzhou) digunakan sebagai contoh.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        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 respons harus di-URL-encode, Anda harus mendekode nilai prefix, delimiter, startAfter, key, dan commonPrefixes dalam respons.
            do {
                ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName).withMaxKeys(maxKeys);
                listObjectsV2Request.setPrefix(keyPrefix);
                listObjectsV2Request.setEncodingType("url");
                listObjectsV2Request.setContinuationToken(nextContinuationToken);
                result = ossClient.listObjectsV2(listObjectsV2Request);

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

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

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

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

                // Dekode awalan umum.
                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 respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + 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 client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Simulasikan direktori

OSS tidak mendukung direktori secara native; OSS menggunakan struktur datar yang mengorganisasi semua data sebagai objek. Untuk mensimulasikan direktori, buat objek nol-byte dengan kunci yang diakhiri garis miring maju (/). Konsol OSS menampilkan objek ini sebagai direktori, dan Anda dapat mengunggah serta mengunduhnya seperti objek lainnya. Untuk contoh kode lengkap cara membuat direktori, lihat contoh di GitHub.

Anda dapat menggunakan parameter delimiter dan prefix untuk mendaftar objek secara hierarkis, seolah-olah dalam struktur direktori:

  • Jika Anda mengatur parameter prefix ke nama direktori, operasi tersebut akan mendaftar secara rekursif semua objek dan subdirektori di bawah path tersebut. Semua hasil dikembalikan dalam daftar Objects.

  • Jika Anda mengatur prefix dan juga mengatur delimiter ke garis miring maju (/), operasi tersebut hanya akan mendaftar objek dan subdirektori langsung di path yang ditentukan. Objek dikembalikan dalam daftar Objects, dan subdirektori dikelompokkan dalam daftar CommonPrefixes. Objek di dalam subdirektori tidak didaftar.

Sebagai contoh, asumsikan sebuah bucket berisi objek berikut: oss.jpg, fun/test.jpg, fun/movie/001.avi, dan fun/movie/007.avi. Garis miring maju (/) adalah delimiter. Contoh berikut menunjukkan cara mendaftar objek ini seolah-olah berada dalam direktori.

Mendaftar semua objek dalam bucket

  • Mendaftar semua objek dalam bucket menggunakan 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 untuk wilayah China (Hangzhou). Ganti dengan titik akhir aktual untuk wilayah Anda.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Ganti dengan nama bucket Anda. Contoh: examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Contoh ini menggunakan wilayah China (Hangzhou).
            String region = "cn-hangzhou";
    
            // Buat instans OSSClient.
            // Saat Anda tidak lagi memerlukan instans OSSClient, panggil metode shutdown untuk melepaskan sumber dayanya.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
            OSS ossClient = OSSClientBuilder.create()
            .endpoint(endpoint)
            .credentialsProvider(credentialsProvider)
            .clientConfiguration(clientBuilderConfiguration)
            .region(region)               
            .build();
    
            try {
                // Buat 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 respons error karena suatu alasan.");
                System.out.println("Pesan Error:" + oe.getErrorMessage());
                System.out.println("Kode Error:" + 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 client mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Error:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }
  • Mendaftar semua objek dalam bucket menggunakan 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 untuk wilayah China (Hangzhou). Ganti dengan titik akhir aktual untuk wilayah Anda.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Ganti dengan nama bucket Anda. Contoh: examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Contoh ini menggunakan wilayah China (Hangzhou).
            String region = "cn-hangzhou";
    
            // Buat instans OSSClient.
            // Saat Anda tidak lagi memerlukan instans OSSClient, panggil metode shutdown untuk melepaskan sumber dayanya.
            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 respons error karena suatu alasan.");
                System.out.println("Pesan Error:" + oe.getErrorMessage());
                System.out.println("Kode Error:" + 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 client mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Error:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }
  • Hasil

    Kedua metode mengembalikan hasil berikut untuk mendaftar semua objek dalam bucket.

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

Mendaftar semua objek dalam direktori secara rekursif

  • Mendaftar semua objek dalam direktori secara rekursif menggunakan 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 untuk wilayah China (Hangzhou). Ganti dengan titik akhir aktual untuk wilayah Anda.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Ganti dengan nama bucket Anda. Contoh: examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Contoh ini menggunakan wilayah China (Hangzhou).
            String region = "cn-hangzhou";
    
            // Buat instans OSSClient.
            // Saat Anda tidak lagi memerlukan instans OSSClient, panggil metode shutdown untuk melepaskan sumber dayanya.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
            OSS ossClient = OSSClientBuilder.create()
            .endpoint(endpoint)
            .credentialsProvider(credentialsProvider)
            .clientConfiguration(clientBuilderConfiguration)
            .region(region)               
            .build();
    
            try {
                // Buat ListObjectsRequest.
                ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
                // Atur prefix untuk mendaftar semua objek dalam direktori 'fun'.
                listObjectsRequest.setPrefix("fun/");
    
                // Mendaftar semua objek dalam direktori 'fun' secara rekursif.
                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 respons error karena suatu alasan.");
                System.out.println("Pesan Error:" + oe.getErrorMessage());
                System.out.println("Kode Error:" + 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 client mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Error:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }
  • Mendaftar semua objek dalam direktori secara rekursif menggunakan 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 untuk wilayah China (Hangzhou). Ganti dengan titik akhir aktual untuk wilayah Anda.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Ganti dengan nama bucket Anda. Contoh: examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Contoh ini menggunakan wilayah China (Hangzhou).
            String region = "cn-hangzhou";
    
            // Buat instans OSSClient.
            // Saat Anda tidak lagi memerlukan instans OSSClient, panggil metode shutdown untuk melepaskan sumber dayanya.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
            OSS ossClient = OSSClientBuilder.create()
            .endpoint(endpoint)
            .credentialsProvider(credentialsProvider)
            .clientConfiguration(clientBuilderConfiguration)
            .region(region)               
            .build();
    
            try {
                // Buat ListObjectsV2Request.
                ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
    
                // Atur prefix untuk mendaftar semua objek dalam direktori 'fun'.
                listObjectsV2Request.setPrefix("fun/");
    
                // Kirim permintaan daftar.
                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 respons error karena suatu alasan.");
                System.out.println("Pesan Error:" + oe.getErrorMessage());
                System.out.println("Kode Error:" + 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 client mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Error:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }
  • Kedua metode mengembalikan hasil berikut untuk mendaftar semua objek dalam direktori yang ditentukan secara rekursif.

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

Mendaftar objek dan subdirektori

  • Mendaftar objek dan subdirektori menggunakan 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 untuk wilayah China (Hangzhou). Ganti dengan titik akhir aktual untuk wilayah Anda.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Ganti dengan nama bucket Anda. Contoh: examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Contoh ini menggunakan wilayah China (Hangzhou).
            String region = "cn-hangzhou";
    
            // Buat instans OSSClient.
            // Saat Anda tidak lagi memerlukan instans OSSClient, panggil metode shutdown untuk melepaskan sumber dayanya.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
            OSS ossClient = OSSClientBuilder.create()
            .endpoint(endpoint)
            .credentialsProvider(credentialsProvider)
            .clientConfiguration(clientBuilderConfiguration)
            .region(region)               
            .build();
    
            try {
                // Buat ListObjectsRequest.
                ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
    
                // Atur delimiter ke garis miring maju (/).
                listObjectsRequest.setDelimiter("/");
    
                // Mendaftar semua objek dan subdirektori dalam direktori 'fun'.
                listObjectsRequest.setPrefix("fun/");
    
                ObjectListing listing = ossClient.listObjects(listObjectsRequest);
    
                // Telusuri semua objek.
                System.out.println("Objects:");
                // Daftar objectSummaries berisi objek yang langsung berada dalam direktori 'fun/'.
                for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
                    System.out.println(objectSummary.getKey());
                }
    
                // Telusuri semua awalan umum.
                System.out.println("\nCommonPrefixes:");
                // Daftar commonPrefixes berisi semua subdirektori dalam direktori 'fun/'. Objek fun/movie/001.avi dan fun/movie/007.avi tidak tercantum di sini karena berada di dalam subdirektori 'movie/'.
                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 respons error karena suatu alasan.");
                System.out.println("Pesan Error:" + oe.getErrorMessage());
                System.out.println("Kode Error:" + 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 client mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Error:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }
  • Mendaftar objek dan subdirektori menggunakan 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 untuk wilayah China (Hangzhou). Ganti dengan titik akhir aktual untuk wilayah Anda.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Ganti dengan nama bucket Anda. Contoh: examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Contoh ini menggunakan wilayah China (Hangzhou).
            String region = "cn-hangzhou";
    
            // Buat instans OSSClient.
            // Saat Anda tidak lagi memerlukan instans OSSClient, panggil metode shutdown untuk melepaskan sumber dayanya.
            ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
            clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
            OSS ossClient = OSSClientBuilder.create()
            .endpoint(endpoint)
            .credentialsProvider(credentialsProvider)
            .clientConfiguration(clientBuilderConfiguration)
            .region(region)               
            .build();
    
            try {
                // Buat ListObjectsV2Request.
                ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
    
                // Atur prefix untuk mendaftar semua objek dan subdirektori dalam direktori 'fun/'.
                listObjectsV2Request.setPrefix("fun/");
    
                // Atur delimiter ke garis miring maju (/).
                listObjectsV2Request.setDelimiter("/");
    
                // Kirim permintaan daftar.
                ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
    
                // Telusuri objek.
                System.out.println("Objects:");
                // Daftar objectSummaries berisi objek yang langsung berada dalam direktori 'fun/'.
                for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
                    System.out.println(objectSummary.getKey());
                }
    
                // Telusuri awalan umum.
                System.out.println("\nCommonPrefixes:");
                // Daftar commonPrefixes berisi semua subdirektori dalam direktori 'fun/'. Objek fun/movie/001.avi dan fun/movie/007.avi tidak tercantum di sini karena berada di dalam subdirektori 'movie/'.
                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 respons error karena suatu alasan.");
                System.out.println("Pesan Error:" + oe.getErrorMessage());
                System.out.println("Kode Error:" + 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 client mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Error:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }
  • Kedua metode mengembalikan hasil berikut untuk mendaftar objek dan subdirektori di path yang ditentukan:

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

Menghitung ukuran direktori

  • Menghitung ukuran total objek dalam direktori menggunakan 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;
    import com.aliyun.oss.model.ListObjectsRequest; 
    
    public class Demo {
        public static void main(String[] args) throws Exception {
            // Contoh ini menggunakan titik akhir untuk wilayah China (Hangzhou). Ganti dengan titik akhir aktual untuk wilayah Anda.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";      
            // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Ganti dengan nama bucket Anda. Contoh: examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Contoh ini menggunakan wilayah China (Hangzhou).
            String region = "cn-hangzhou";
            // Tentukan prefix, seperti 'exampledir/'. Untuk menjelajahi direktori root, biarkan kosong.
            String prefix = "exampledir/";
    
            // Buat instans OSSClient.
            // Saat Anda tidak lagi memerlukan instans OSSClient, panggil metode shutdown untuk melepaskan sumber dayanya.
            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 {
                    ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
                    listObjectsRequest.setPrefix(prefix);
                    listObjectsRequest.setMaxKeys(maxKeys);
                    // Gunakan penanda dari respons sebelumnya untuk pagination.
                    listObjectsRequest.setMarker(nextMarker); 
    
                    ObjectListing objectListing = ossClient.listObjects(listObjectsRequest);
    
                    if (objectListing.getObjectSummaries().isEmpty()) {
                        break; 
                    }
    
                    for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) {
                        totalSize += objectSummary.getSize();
                        totalCount++;
                        // Cetak kunci dan ukuran setiap objek.
                        System.out.println("File: " + objectSummary.getKey() + " | Size: " + objectSummary.getSize() + " bytes (" + formatSize(objectSummary.getSize()) + ")");
                    }
                    nextMarker = objectListing.getNextMarker();
    
    
                } while (nextMarker != null && !nextMarker.isEmpty());
    
                System.out.println("\nFolder Prefix: " + (prefix.isEmpty() ? "/" : 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: " + oe.getErrorMessage());
                System.out.println("Error Code: " + oe.getErrorCode());
                System.out.println("Request ID: " + oe.getRequestId());
            } catch (ClientException ce) {
                System.out.println("Terjadi ClientException: " + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    
        // Konversi byte ke format yang mudah dibaca.
        public static String formatSize(long size) {
            if (size <= 0) {
                return "0 B";
            }
            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]);
        }
    }
  • Menghitung ukuran total objek dalam direktori menggunakan 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 untuk wilayah China (Hangzhou). Ganti dengan titik akhir aktual untuk wilayah Anda.
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // Ganti dengan nama bucket Anda. Contoh: examplebucket.
            String bucketName = "examplebucket";
            // Tentukan wilayah tempat bucket berada. Contoh ini menggunakan wilayah China (Hangzhou).
            String region = "cn-hangzhou";
            // Tentukan prefix, seperti 'exampledir/'. Untuk menjelajahi direktori root, biarkan kosong.
            String prefix = "exampledir/";
    
            // Buat instans OSSClient.
            // Saat Anda tidak lagi memerlukan instans OSSClient, panggil metode shutdown untuk melepaskan sumber dayanya.
            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: " + (prefix.isEmpty() ? "/" : 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 respons error karena suatu alasan.");
                System.out.println("Pesan Error:" + oe.getErrorMessage());
                System.out.println("Kode Error:" + 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 client mengalami "
                        + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                        + "seperti tidak dapat mengakses jaringan.");
                System.out.println("Pesan Error:" + 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