このトピックでは、一度に1つのオブジェクトまたは複数のオブジェクトを削除する方法について説明します。
削除されたオブジェクトは復元できません。 オブジェクトを削除するときは注意してください。
使用上の注意
オブジェクトを削除するには、オブジェクトが格納されているバケットに対する書き込み権限が必要です。
このトピックのサンプルコードを実行する前に、カスタムドメイン名やSecurity Token Service (STS) などの方法を使用してOSSClientインスタンスを作成する必要があります。 詳細については、「初期化」をご参照ください。
単一のオブジェクトの削除
次のサンプルコードは、examplebucketという名前のバケットからexampleobject.txtという名前のオブジェクトを削除する方法の例を示しています。
// 削除リクエストを作成します。
// バケットの名前とオブジェクトの完全パスを指定します。 この例では、バケット名はexamplebucketで、オブジェクトの完全パスはexampledir/exampleobject.txtです。 オブジェクトのフルパスにバケット名を含めないでください。
DeleteObjectRequest delete = new DeleteObjectRequest("examplebucket", "exampledir/exampleobject.txt");
// オブジェクトを非同期的に削除します。
OSSAsyncTask deleteTask = oss.asyncDeleteObject(delete, new OSSCompletedCallback<DeleteObjectRequest, DeleteObjectResult>() {
@オーバーライド
public void onSuccess(DeleteObjectRequestリクエスト、DeleteObjectResult結果) {
Log.d("asyncDeleteObject", "success!");
}
@オーバーライド
public void onFailure(DeleteObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// リクエスト例外を処理します。
if (clientExcepion != null) {
// ネットワーク例外など、クライアント側の例外を処理します。
clientExcepion.printStackTrace();
}
if (serviceException != null) {
// サーバー側の例外を処理します。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
一度に複数のオブジェクトを削除する
一度に最大1,000個のオブジェクトを削除できます。
削除結果は、次の2つのモードで返すことができます。 要件に基づいて返品モードを選択します。
verbose (デフォルト): isQuietが指定されていないか、falseに設定されている場合、削除されたすべてのオブジェクトのリストが返されます。
quiet: isQuietがtrueに設定されている場合、削除に失敗したオブジェクトのリストが返されます。
次のサンプルコードは、examplebucketという名前のバケットから複数の指定されたオブジェクトを削除し、その結果をクワイエットモードで返す方法の例を示しています。
// 削除するオブジェクトのフルパスを指定します。 完全なパスにバケット名を含めないでください。
List<String> objectKeys = new ArrayList<String>();
objectKeys.add("exampleobject.txt");
objectKeys.add("testfolder/sampleobject.txt");
// isQuietをtrueに設定すると、削除に失敗したオブジェクトのリストのみが返されます。
DeleteMultipleObjectRequest request = new DeleteMultipleObjectRequest("examplebucket", objectKeys, true);
oss.asyncDeleteMultipleObject(request, new OSSCompletedCallback<DeleteMultipleObjectRequest, DeleteMultipleObjectResult>() {
@オーバーライド
public void onSuccess(DeleteMultipleObjectRequestリクエスト, DeleteMultipleObjectResult result) {
Log.i("DeleteMultipleObject" 、"success");
}
@オーバーライド
public void onFailure(DeleteMultipleObjectRequest request, ClientException clientException, ServiceException serviceException) {
// リクエスト例外を処理します。
if (clientException != null) {
// ネットワーク例外など、クライアント側の例外を処理します。
clientException.printStackTrace();
}
if (serviceException != null) {
// サーバー側の例外を処理します。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
参考資料
単一のオブジェクトの削除
単一のオブジェクトを削除するために呼び出すことができるAPI操作の詳細については、「DeleteObject」をご参照ください。
一度に複数のオブジェクトを削除する
一度に複数のオブジェクトを削除するために呼び出すことができるAPI操作の詳細については、「DeleteMultipleObjects」をご参照ください。
OSSClientインスタンスを初期化する方法の詳細については、「初期化」をご参照ください。