官方文档地址
官方demo的地址
https://www.alibabacloud.com/help/zh/oss/developer-reference/delete-objects-4?spm=a2c63.p38356.0.0.75982d0bQakhTu
代码(谨慎使用)
谨慎使用
在删除时,如果配置的前缀为空字符串或者NULL
,则会删除所有文件
!!!
- 引入的包
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.*;
import java.util.*;
import java.util.List;
- 代码
public void deleteOSSFiles() {
String ossEndPoint = "yourEndPoint";
String ossKeyId = "yourKeyId";
String ossKeySecret = "yourKeySecret";
String ossBucketName = "yourBucketName";
// 创建连接
OSS ossClient = new OSSClientBuilder().build(ossEndPoint, ossKeyId, ossKeySecret);
String nextMarker = null;
ObjectListing objectListing;
do {
// 如果删除的前缀为空,则清空OSS所有内容,请谨慎配置
// 若要删除根目录下src文件夹则设置为 src/
ListObjectsRequest listObjectsRequest = new ListObjectsRequest(ossBucketName)
.withPrefix("删除的前缀")
.withMarker(nextMarker);
objectListing = ossClient.listObjects(listObjectsRequest);
if (!objectListing.getObjectSummaries().isEmpty()) {
java.util.List<String> keys = new ArrayList<>();
for (OSSObjectSummary s : objectListing.getObjectSummaries()) {
log.info("遍历OSS路径下将要删除的文件->:{}", s.getKey());
keys.add(s.getKey());
}
DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest(ossBucketName).withKeys(keys)
.withEncodingType("url");
DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(deleteObjectsRequest);
// 删除文件
List<String> deletedObjects = deleteObjectsResult.getDeletedObjects();
try {
// 打印删除内容
for(String obj : deletedObjects) {
String deleteObj = URLDecoder.decode(obj, "UTF-8");
log.info("删除OSS文件->:{}", deleteObj);
}
} catch (UnsupportedEncodingException e) {
log.error("OSS文件删除失败");
}
}
// 修改标记位置为下一批数据处理位置
nextMarker = objectListing.getNextMarker();
} while (objectListing.isTruncated());
// 关闭连接
ossClient.shutdown();
}