清空 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 条评论
登录 后参与评论

相关文章

来自专栏owent

C++ 新特性学习(八) — 原子操作和多线程库[多工内存模型]

分别对于两个进程而言,可观察行为确实没有变化。而这种优化在某些时候确实会有比较明显的效果。但是很显然,语义变化了。在原来的结果里不可能发生 x和y都为0的情况,...

571
来自专栏linux驱动个人学习

Memory barrier 简介

程序在运行时内存实际的访问顺序和程序代码编写的访问顺序不一定一致,这就是内存乱序访问。内存乱序访问行为出现的理由是为了提升程序运行时的性能。内存乱序访问主要发生...

1103
来自专栏小怪聊职场

安全|API接口安全性设计(防篡改和重复调用)

API接口的安全性主要是为了保证数据不会被篡改和重复调用,实现方案主要围绕Token、时间戳和Sign三个机制展开设计。

3032
来自专栏Coding迪斯尼

利用web work实现多线程异步机制,打造页面单步调试IDE

我们已经完成了整个编译器的开发,现在我们做一个能够单步调试的页面IDE,完成本章代码后,我们可以实现下面如图所示功能:

1043
来自专栏coding

vim编辑器使用方法

1233
来自专栏技术博客

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

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

752
来自专栏CDA数据分析师

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

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

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

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

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

831
来自专栏流柯技术学院

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

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

2752
来自专栏向治洪

责任链模式

概述 概念:责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定...

1865

扫码关注云+社区