COS 的web控制台和登录工具里面没有提供清空bucket的功能,批量删除每次删除上限1000条,且删除的操作相对麻烦。
刚好有删除bucket的需求,但是需要先清空bucket下的文件。所以写了一个简单的清空小工具,只是小工具,没有做太多校验。
import java.util.ArrayList;
import java.util.List;
import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.model.COSObjectSummary;
import com.qcloud.cos.model.DeleteObjectsRequest;
import com.qcloud.cos.model.DeleteObjectsRequest.KeyVersion;
import com.qcloud.cos.model.ObjectListing;
import com.qcloud.cos.region.Region;
public class ClearCOS {
public static void main(String[] args) {
String secretId = "你的ID";
String secretKey = "你的KEY";
// 1 初始化用户身份信息(secretId, secretKey)
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
// 2 设置bucket的区域, COS地域的简称请参照
// https://cloud.tencent.com/document/product/436/6224
ClientConfig clientConfig = new ClientConfig(new Region("ap-shanghai"));
// 3 生成cos客户端
COSClient cosclient = new COSClient(cred, clientConfig);
// bucket的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式
String bucketName = "你的bucket名称-你的appid";
// 循环进行删除,如果删完了就会停止
while(true) {
ObjectListing list = cosclient.listObjects(bucketName);
List<COSObjectSummary> lists = list.getObjectSummaries();
if(lists.isEmpty()) {
break;
}
List<KeyVersion> keys = new ArrayList<>();
lists.forEach((e) -> { // 此处没有做1000条记录校验,因为listObjects没有返回过1000条的情况,如果你有遇到,请做一下简单判断.
String key = e.getKey();
KeyVersion kv = new KeyVersion(key);
keys.add(kv);
});
DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest(bucketName);
deleteObjectsRequest.setKeys(keys );
cosclient.deleteObjects(deleteObjectsRequest);
}
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。