Java删除OSS文件夹及文件夹下所有文件

298 阅读1分钟

官方文档地址

官方demo的地址

www.alibabacloud.com/help/zh/oss…

代码(谨慎使用)

谨慎使用

在删除时,如果配置的前缀为空字符串或者NULL,则会删除所有文件!!!!!!!!

  1. 引入的包
import com.aliyun.oss.OSS;  
import com.aliyun.oss.OSSClientBuilder;  
import com.aliyun.oss.model.*;  
import java.util.*;  
import java.util.List;
  1. 代码
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();
}