tencent cloud

文档反馈

删除对象

最后更新时间:2024-01-04 15:52:02

    简介

    本文档提供关于对象的删除操作相关的 API 概览以及 SDK 示例代码。
    API
    操作名
    操作描述
    删除单个对象
    在存储桶中删除指定对象
    删除多个对象
    在存储桶中批量删除对象

    SDK API 参考

    SDK 所有接口的具体参数与方法说明,请参考 SDK API 参考

    删除单个对象

    功能说明

    删除指定的对象(DELETE Object)。

    示例代码

    String bucket = "examplebucket-1250000000"; //存储桶名称,格式:BucketName-APPID
    String cosPath = "exampleobject"; //对象在存储桶中的位置标识符,即对象键
    
    DeleteObjectRequest deleteObjectRequest = new DeleteObjectRequest(bucket,
    cosPath);
    cosXmlService.deleteObjectAsync(deleteObjectRequest,
    new CosXmlResultListener() {
    @Override
    public void onSuccess(CosXmlRequest cosXmlRequest, CosXmlResult result) {
    DeleteObjectResult deleteObjectResult = (DeleteObjectResult) result;
    }
    
    // 如果您使用 kotlin 语言来调用,请注意回调方法中的异常是可空的,否则不会回调 onFail 方法,即:
    // clientException 的类型为 CosXmlClientException?,serviceException 的类型为 CosXmlServiceException?
    @Override
    public void onFail(CosXmlRequest cosXmlRequest,
    @Nullable CosXmlClientException clientException,
    @Nullable CosXmlServiceException serviceException) {
    if (clientException != null) {
    clientException.printStackTrace();
    } else {
    serviceException.printStackTrace();
    }
    }
    });
    说明
    更多完整示例,请前往 GitHub 查看。

    删除多个对象

    功能说明

    批量删除多个对象(Delete Multi Objects)。

    示例代码

    // 存储桶名称,由bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。 https://console.tencentcloud.com/cos5/bucket
    String bucket = "examplebucket-1250000000";
    List<String> objectList = new ArrayList<String>();
    objectList.add("exampleobject1"); //对象在存储桶中的位置标识符,即对象键
    objectList.add("exampleobject2"); //对象在存储桶中的位置标识符,即对象键
    
    DeleteMultiObjectRequest deleteMultiObjectRequest =
    new DeleteMultiObjectRequest(bucket, objectList);
    // Quiet 模式只返回报错的 Object 信息。否则返回每个 Object 的删除结果。
    deleteMultiObjectRequest.setQuiet(true);
    cosXmlService.deleteMultiObjectAsync(deleteMultiObjectRequest,
    new CosXmlResultListener() {
    @Override
    public void onSuccess(CosXmlRequest cosXmlRequest, CosXmlResult result) {
    DeleteMultiObjectResult deleteMultiObjectResult =
    (DeleteMultiObjectResult) result;
    }
    
    // 如果您使用 kotlin 语言来调用,请注意回调方法中的异常是可空的,否则不会回调 onFail 方法,即:
    // clientException 的类型为 CosXmlClientException?,serviceException 的类型为 CosXmlServiceException?
    @Override
    public void onFail(CosXmlRequest cosXmlRequest,
    @Nullable CosXmlClientException clientException,
    @Nullable CosXmlServiceException serviceException) {
    if (clientException != null) {
    clientException.printStackTrace();
    } else {
    serviceException.printStackTrace();
    }
    }
    });
    说明
    更多完整示例,请前往 GitHub 查看。

    删除目录

    功能说明

    COS 上的文件夹概念是以 / 分隔对象名,形成类似文件系统的路径,从而模拟出来的。所以删除文件夹的操作,在 COS 上相当于删除一批有着同样前缀的对象。例如:文件夹 prefix/ ,代表的是以 prefix/ 为前缀的所有对象,所以删除 prefix/ 意味着删除以 prefix/ 为前缀的所有对象。
    目前 COS Android SDK 没有提供一个接口去支持这样的操作,但是可以通过基本操作的组合,达到同样的效果。

    示例代码

    // 存储桶名称,由bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。 https://console.tencentcloud.com/cos5/bucket
    String bucket = "examplebucket-1250000000";
    String prefix = "folder1/"; //指定前缀
    
    GetBucketRequest getBucketRequest = new GetBucketRequest(bucket);
    getBucketRequest.setPrefix(prefix);
    
    // prefix表示要删除的文件夹
    getBucketRequest.setPrefix(prefix);
    // 设置最大遍历出多少个对象, 一次listobject最大支持1000
    getBucketRequest.setMaxKeys(1000);
    GetBucketResult getBucketResult = null;
    
    do {
    try {
    getBucketResult = cosXmlService.getBucket(getBucketRequest);
    List<ListBucket.Contents> contents = getBucketResult.listBucket.contentsList;
    DeleteMultiObjectRequest deleteMultiObjectRequest = new DeleteMultiObjectRequest(bucket);
    for (ListBucket.Contents content : contents) {
    deleteMultiObjectRequest.setObjectList(content.key);
    }
    cosXmlService.deleteMultiObject(deleteMultiObjectRequest);
    getBucketRequest.setMarker(getBucketResult.listBucket.nextMarker);
    } catch (CosXmlClientException e) {
    e.printStackTrace();
    return;
    } catch (CosXmlServiceException e) {
    e.printStackTrace();
    return;
    }
    } while (getBucketResult.listBucket.isTruncated);
    说明
    更多完整示例,请前往 GitHub 查看。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持