清空 COS Bucket 内文件 (Java)

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);

}

}

}


原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

使用记

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术博客

C#简单的面试题目(六)

76.HashMap和Hashtable的区别。 答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于H...

672
来自专栏coding

vim编辑器使用方法

1093
来自专栏分布式系统和大数据处理

.Net Remoting(分离服务程序实现) - Part.3

在上面Remoting基本操作的范例中,我们发现了这样一个情况:即是 客户应用程序 仍然需要引用 服务程序集(ServerAssembly),因为它需要Demo...

701
来自专栏Esofar 开发日记

[译]RabbitMQ教程C#版 - 主题

在 教程[4] 中,我们改进了我们日志系统。我们用direct交换器替换了只能呆滞广播消息的fanout交换器,从而可以有选择性的接收日志。

753
来自专栏腾讯移动品质中心TMQ的专栏

运用AOP思想更优雅地进行性能调优

在软件测试中,如果想在一个耗时严重的操作中找出其耗时的瓶颈时,一般采用的方法是在每个被调用的函数中写进测试代码,在运行时打出日志。如果该操作涉及到的业务逻辑特别...

1869
来自专栏葡萄城控件技术团队

Asp.Net MVC4入门指南(2):添加一个控制器

MVC代表: 模型-视图-控制器 。MVC是一个架构良好并且易于测试和易于维护的开发模式。基于MVC模式的应用程序包含: · Models: 表示该应用程序的数...

1817
来自专栏CDA数据分析师

学会这几招,轻松掌握Python文件管理

一、Python中的文件管理 文件管理是很多应用程序的基本功能和重要组成部分。Python可以使文件管理极其简单,特别是和其它语言相对比。 以下,Peyton ...

2536
来自专栏流柯技术学院

Selenium的PO模式(Page Object Model)[python版]

首先,我们要分离测试对象(元素对象)和测试脚本(用例脚本),那么我们分别创建两个脚本文件, LoginPage.py 用于定义页面元素对象,每一个元素都封装成组...

2072
来自专栏JMCui

wait/notify 实现多线程交叉备份

一、任务     创建20个线程,其中10个线程是将数据备份到 A 数据库中,另外10 个线程将数据备份到 B 数据库中,并且备份 A 数据库和 备份 B 数据...

3318
来自专栏hbbliyong

在C#使用文件监控对象FileSystemWatcher 实现数据同步

       最近在项目中有这么个需求,就是得去实时获取某个在无规律改变的文本文件中的内容。首先想到的是用程序定期去访问这个文件,因为对实时性要求很高,间隔不能...

3136

扫码关注云+社区