このトピックでは、単一のオブジェクトを削除する方法、または複数のオブジェクトを一度に削除する方法について説明します。
削除されたオブジェクトは復元できません。オブジェクトを削除するときは注意してください。
注意事項
オブジェクトを削除するには、そのオブジェクトが保存されているバケットに対する書き込み権限が必要です。
このトピックのサンプルコードを実行する前に、カスタムドメイン名やセキュリティトークンサービス (STS) などの方法を使用して OSSClient インスタンスを作成する必要があります。詳細については、「初期化 (Android SDK)」をご参照ください。
単一オブジェクトの削除
次のサンプルコードは、`examplebucket` という名前のバケットから `exampleobject.txt` という名前のオブジェクトを削除する方法の例です。
// 削除リクエストを作成します。
// バケット名 (例:examplebucket) とオブジェクトの完全なパス (例:exampledir/exampleobject.txt) を指定します。オブジェクトの完全なパスにバケット名を含めることはできません。
DeleteObjectRequest delete = new DeleteObjectRequest("examplebucket", "exampledir/exampleobject.txt");
// オブジェクトを非同期に削除します。
OSSAsyncTask deleteTask = oss.asyncDeleteObject(delete, new OSSCompletedCallback<DeleteObjectRequest, DeleteObjectResult>() {
@Override
public void onSuccess(DeleteObjectRequest request, DeleteObjectResult result) {
Log.d("asyncDeleteObject", "success!");
}
@Override
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 つのモードで返されます。要件に基づいて返却モードを選択してください。
詳細モード (デフォルト):`isQuiet` が指定されていないか、`false` に設定されている場合、削除されたすべてのオブジェクトのリストが返されます。
quiet モード:`isQuiet` が `true` に設定されている場合、削除に失敗したオブジェクトのリストが返されます。
次のサンプルコードは、`examplebucket` という名前のバケットから指定された複数のオブジェクトを削除し、結果を quiet モードで返す例です。
// 削除するオブジェクトの完全なパスを指定します。オブジェクトの完全なパスにバケット名を含めることはできません。
List<String> objectKeys = new ArrayList<String>();
objectKeys.add("exampleobject.txt");
objectKeys.add("testfolder/sampleobject.txt");
// 削除に失敗したファイルのリストのみを返すように、モードを quiet モードに設定します。
DeleteMultipleObjectRequest request = new DeleteMultipleObjectRequest("examplebucket", objectKeys, true);
oss.asyncDeleteMultipleObject(request, new OSSCompletedCallback<DeleteMultipleObjectRequest, DeleteMultipleObjectResult>() {
@Override
public void onSuccess(DeleteMultipleObjectRequest request, DeleteMultipleObjectResult result) {
Log.i("DeleteMultipleObject", "success");
}
@Override
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 インスタンスの初期化方法の詳細については、「初期化」をご参照ください。