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 parameterfetchOwner.CatatanGunakan 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
delimiteryang 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
delimiteryang 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 | 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 | 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 {
ObjectListingMendaftar 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 ( | 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 | 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
prefixke nama direktori, operasi tersebut akan mendaftar secara rekursif semua objek dan subdirektori di bawah path tersebut. Semua hasil dikembalikan dalam daftarObjects.Jika Anda mengatur
prefixdan juga mengaturdelimiterke garis miring maju (/), operasi tersebut hanya akan mendaftar objek dan subdirektori langsung di path yang ditentukan. Objek dikembalikan dalam daftarObjects, dan subdirektori dikelompokkan dalam daftarCommonPrefixes. 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
Untuk kode contoh lengkap tentang mendaftar objek, lihat contoh di GitHub.
Untuk informasi selengkapnya tentang mendaftar objek, lihat GetBucket (ListObjects) dan ListObjectsV2 (GetBucketV2).
Untuk informasi selengkapnya tentang mendaftar dan mengelola objek terkait LiveChannel, lihat Manajemen LiveChannel (Java SDK V1).