S通信时遇到问题");
logger.error("Error Message:[{}]", ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
return flag;
}
/**
* 删除目录 (不建议用)
* 非常危险!!!! 如果以下示例代码中前缀prefix的值为空字符串或者NULL,将会删除整个Bucket内的所有文件,请谨慎使用。
*
* @param prefix
* @return
*/
public static boolean deleteFolder(String prefix) {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(aliYunOSSUtil.ossConfig.getEndpoint()
, aliYunOSSUtil.ossConfig.getAccessKeyId()
, aliYunOSSUtil.ossConfig.getAccessKeySecret());
boolean flag = false;
if (prefix == null || prefix.equals("")) {
//传"" 会删除这个bucket 下所有文件, 谨慎!!
return false;
}
try {
// 删除目录及目录下的所有文件。
String nextMarker = null;
ObjectListing objectListing = null;
do {
ListObjectsRequest listObjectsRequest = new ListObjectsRequest(aliYunOSSUtil.ossConfig.getBucket())
.withPrefix(prefix)
.withMarker(nextMarker);
objectListing = ossClient.listObjects(listObjectsRequest);
if (objectListing.getObjectSummaries().size() > 0) {
List<String> keys = objectListing.getObjectSummaries().stream().map(OSSObjectSummary::getKey).collect(Collectors.toList());
DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest(aliYunOSSUtil.ossConfig.getBucket()).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");
System.out.println("删除了:" + deleteObj);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
nextMarker = objectListing.getNextMarker();
} while (objectListing.isTruncated());
flag = true;
} catch (OSSException oe) {
logger.error("请求已发送到OSS,但由于某种原因被拒绝并出现错误响应");
logger.error("Error Message:[{}]", oe.getErrorMessage());
logger.error("Error Code:[{}]", oe.getErrorCode());
logger.error("Request ID:[{}]", oe.getRequestId());
logger.error("Host ID:[{}]", oe.getHostId());
} catch (ClientException ce) {
logger.error("客户端在尝试与OSS通信时遇到问题");
logger.error("Error Message:[{}]", ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
return flag;
}
/**
* 创建目录
*
* @param folder 填写目录名称,目录需以正斜线结尾 如:"exampledir/"。
* @return
*/
public static boolean createFolder(String folder) {
OSS ossClient = new OSSClientBuilder().build(aliYunOSSUtil.ossConfig.getEndpoint()
, aliYunOSSUtil.ossConfig.getAccessKeyId()
, aliYunOSSUtil.ossConfig.getAccessKeySecret());
// 判断文件夹是否存在,不存在则创建
boolean flag = false;
if (!ossClient.doesObjectExist(aliYunOSSUtil.ossConfig.getBucket(), folder)) {
try {
String content = "";
// 创建PutObjectRequest对象。
PutObjectRequest putObjectRequest = new PutObjectRequest(aliYunOSSUtil.ossConfig.getBucket()
, folder, new ByteArrayInputStream(content.getBytes()));
// 如果需要上传时设置存储类型和访问权限,请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// metadata.setObjectA |