オブジェクトの名前を直接変更することはできません。 バケット内のオブジェクトの名前を変更するには、CopyObject操作を呼び出してソースオブジェクトを宛先オブジェクトにコピーし、DeleteObject操作を呼び出してソースオブジェクトを削除します。
使用上の注意
このトピックのサンプルコードを実行する前に、カスタムドメイン名やSecurity Token Service (STS) などの方法を使用してOSSClientインスタンスを作成する必要があります。 詳細については、「初期化」をご参照ください。
サンプルコード
次のサンプルコードでは、examplebucketバケット内のsrcobject.txtという名前のオブジェクトの名前をdestobject.txtに変更する方法の例を示します。
// バケットの名前を指定します。
String bucketName = "examplebucket";
// ソースオブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: srcobject.txt。
文字列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.de leteObject(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());
}
説明
バケット内のディレクトリの名前も直接変更できません。 バケット内のディレクトリの名前を変更するには、上記の例に従って、ディレクトリ内のサブディレクトリとオブジェクトの名前を1つずつ変更します。
参考資料
オブジェクトの名前を変更するために呼び出すAPI操作の詳細については、「CopyObject」および「DeleteObject」をご参照ください。
OSSClientインスタンスを初期化する方法の詳細については、「初期化」をご参照ください。