|
@@ -125,13 +125,30 @@ public class OssFileService extends AbstractFYunFileService {
|
|
|
@Override
|
|
|
public void deleteFolder(String bucket, String remoteFolderPath) {
|
|
|
try {
|
|
|
- List<String> remoteFiles = listRemoteFiles(bucket, remoteFolderPath);
|
|
|
- if (CollectionUtils.isEmpty(remoteFiles)) {
|
|
|
- return;
|
|
|
+
|
|
|
+ if (!remoteFolderPath.endsWith("/")) {
|
|
|
+ remoteFolderPath = remoteFolderPath + "/";
|
|
|
}
|
|
|
+ log.info("开始删除文件夹:{}", remoteFolderPath);
|
|
|
+ boolean flag = true;
|
|
|
+ String nextMaker = null;
|
|
|
+ ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucket).withPrefix(remoteFolderPath).withMaxKeys(1000);
|
|
|
+
|
|
|
DeleteObjectsRequest request = new DeleteObjectsRequest(bucket);
|
|
|
- request.setKeys(remoteFiles);
|
|
|
- ossClient.deleteObjects(request);
|
|
|
+ do {
|
|
|
+ //获取下一页的起始点,它的下一项
|
|
|
+ listObjectsRequest.setMarker(nextMaker);
|
|
|
+ ObjectListing objectListing = ossClient.listObjects(listObjectsRequest);
|
|
|
+ List<String> keys = objectListing.getObjectSummaries().parallelStream()
|
|
|
+ .map(OSSObjectSummary::getKey).collect(Collectors.toList());
|
|
|
+ if (!CollectionUtils.isEmpty(keys)) {
|
|
|
+ request.setKeys(keys);
|
|
|
+ ossClient.deleteObjects(request);
|
|
|
+ }
|
|
|
+ nextMaker = objectListing.getNextMarker();
|
|
|
+ //全部执行完后,为false
|
|
|
+ flag = objectListing.isTruncated();
|
|
|
+ } while (flag);
|
|
|
} catch (Exception e) {
|
|
|
log.error("OSS删除文件失败,key:" + remoteFolderPath, e);
|
|
|
}
|