huaweicloud / huaweicloud-sdk-java-obs

The OBS SDK for Java, which is used for accessing Object Storage Service
Other
134 stars 116 forks source link

删除对象后,空目录依旧存在 #130

Open 18513962330 opened 1 year ago

18513962330 commented 1 year ago

可调整为,删除或者不删除

noaccident commented 11 months ago

删除文件夹请参考如下demo: package com.huawei.obs.demo;

import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.DeleteObjectsRequest; import com.obs.services.model.DeleteObjectsResult; import com.obs.services.model.KeyAndVersion; import com.obs.services.model.ListObjectsRequest; import com.obs.services.model.ObjectListing; import com.obs.services.model.ObsObject;

public class DeleteFolder { public static void main(String[] args) { String ak = "Your Access Key"; String sk = "Your Secret Access Key"; String endpoint = "http://your-endpoint";

    ObsClient obsClient = new ObsClient(ak, sk, endpoint);

    String bucketName = "you-bucket-name";

    String remotePrefix = "remotePrefix";

    ListObjectsRequest listRequest = new ListObjectsRequest();
    listRequest.setPrefix(remotePrefix);
    listRequest.setBucketName(bucketName);
    listRequest.setEncodingType("url");

    DeleteObjectsRequest deleteRequest = new DeleteObjectsRequest();
    deleteRequest.setBucketName(bucketName);
    deleteRequest.setEncodingType("url");

    ObjectListing objects;
    KeyAndVersion[] kvs;

    for (int i = 1; ; i++) {
        System.out.println("Start to delete page " + i);
        int index = 0;
        try {
            objects = obsClient.listObjects(listRequest);
        } catch (ObsException e) {
            System.out.println("Request Error, RequestID is: " + e.getErrorRequestId());
            throw e;
        }
        kvs = new KeyAndVersion[objects.getObjects().size()];
        for (ObsObject object : objects.getObjects()) {
            kvs[index++] = new KeyAndVersion(object.getObjectKey());
        }
        deleteRequest.setKeyAndVersions(kvs);
        try {
            DeleteObjectsResult deleteResult = obsClient.deleteObjects(deleteRequest);
            deleteResult.getDeletedObjectResults().forEach(item ->
                    System.out.println("Successfully deleted " + item.toString()));
            deleteResult.getErrorResults().forEach(item ->
                    System.out.println("Failed to deleted " + item.toString()));
        } catch (ObsException e) {
            System.out.println("Request Error, RequestID is: " + e.getErrorRequestId());
            throw e;
        }
        if (!objects.isTruncated()) {
            break;
        }
        // 使用上次返回的 next_marker 作为下次列举的 marker
        listRequest.setMarker(objects.getNextMarker());
    }

}

}