OSS は、オブジェクトの直接的な名前変更をサポートしていません。同じバケット内のオブジェクトの名前を変更するには、CopyObject 操作を呼び出してソースオブジェクトを宛先オブジェクトにコピーします。その後、DeleteObject 操作を呼び出してソースオブジェクトを削除します。
注意事項
このトピックのサンプルコードを実行する前に、カスタムドメイン名や Security Token Service (STS) などの方法を使用して OSSClient インスタンスを作成する必要があります。詳細については、「初期化 (Android SDK)」をご参照ください。
サンプルコード
次のコードは、examplebucket バケット内の srcobject.txt ファイルの名前を destobject.txt に変更する方法の例を示しています。
// バケット名を指定します。
String bucketName = "examplebucket";
// ソースオブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。例: srcobject.txt。
String sourceObjectKey = "srcobject.txt";
// 宛先オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。例: destobject.txt。
String objectKey = "destobject.txt";
try {
CopyObjectRequest copyObjectRequest = new CopyObjectRequest(bucketName, sourceObjectKey, bucketName, objectKey);
oss.copyObject(copyObjectRequest);
// srcobject.txt オブジェクトを削除します。
DeleteObjectRequest deleteObjectRequest = new DeleteObjectRequest(bucketName, sourceObjectKey);
oss.deleteObject(deleteObjectRequest);
} catch (ClientException e) {
// ネットワークエラーなどのクライアント側の例外を処理します。
e.printStackTrace();
} catch (ServiceException e) {
// サーバー側の例外を処理します。
Log.e("RequestId", e.getRequestId());
Log.e("ErrorCode", e.getErrorCode());
Log.e("HostId", e.getHostId());
Log.e("RawMessage", e.getRawMessage());
}説明
OSS は、フォルダの直接的な名前変更をサポートしていません。フォルダの名前を変更するには、フォルダ内の各サブディレクトリとオブジェクトの名前を個別に変更する必要があります。この操作については、上記の例をご参照ください。
関連ドキュメント
ファイルの名前変更に使用される API 操作の詳細については、「CopyObject」および「DeleteObject」をご参照ください。
OSSClient インスタンスを初期化する方法の詳細については、「OSSClient インスタンスの初期化 (Android)」をご参照ください。