OBS JAVA SDK 实践4:统计指定目录下的文件和子目录大小
【摘要】 OBS JAVA SDK 实践4:统计指定目录下的文件和子目录大小1 背景介绍 & 效果展示可以通过JAVA SDK统计指定目录下的文件和子目录大小,效果如下。图1 指定目录share/下的所有文件图2 统计指定目录下的文件和子目录大小2 java代码参考前提:需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud...
OBS JAVA SDK 实践4:统计指定目录下的文件和子目录大小
1 背景介绍 & 效果展示
可以通过JAVA SDK统计指定目录下的文件和子目录大小,效果如下。
图1 指定目录share/下的所有文件
图2 统计指定目录下的文件和子目录大小
2 java代码参考
前提:
需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。
public static void main(String[] args) throws IOException {
String endPoint = "https://your-endpoint";
String ak = "*** Provide your Access Key ***";
String sk = "*** Provide your Secret Key ***";
// 创建ObsClient实例
ObsClient obsClient = new ObsClient(ak, sk, endPoint);
String bucketName = "chongchongtest";
ListObjectsRequest request = new ListObjectsRequest(bucketName);
// 统计文件夹对象名"share/"下面的子目录和文件的大小
request.setPrefix("share/");
request.setDelimiter("/");
ObjectListing result;
// 统计文件夹下对象的大小
System.out.println("Objects:");
do{
result = obsClient.listObjects(request);
for (ObsObject obsObject : result.getObjects())
{
double objectSize = obsObject.getMetadata().getContentLength() / 1024.0;
System.out.println("\t" + obsObject.getObjectKey() + ": " + String.format("%.2f", objectSize) + "KB");
}
System.out.println("------------------------------");
request.setMarker(result.getNextMarker());
}while(result.isTruncated());
// 统计子目录的大小
System.out.println("\nFolder:");
do{
result = obsClient.listObjects(request);
for (String commonPrefix : result.getCommonPrefixes())
{
double objectSize = countFolerLength(obsClient, bucketName, commonPrefix);
System.out.println("\t" + commonPrefix + ": " + String.format("%.2f", objectSize) + "KB");
}
System.out.println("------------------------------");
request.setMarker(result.getNextMarker());
}while(result.isTruncated());
}
//统计每个子目录的大小
private static double countFolerLength(ObsClient obsClient, String bucketName, String folder) {
double size = 0L;
ListObjectsRequest request = new ListObjectsRequest(bucketName);
request.setPrefix(folder);
ObjectListing result;
do{
result = obsClient.listObjects(request);
for (ObsObject obsObject : result.getObjects())
{
size += obsObject.getMetadata().getContentLength() / 1024.0;
}
request.setMarker(result.getNextMarker());
}while(result.isTruncated());
return size;
}
3 附录链接
OBS JAVA SDK 列举对象其它使用方法,官网参考链接:https://support.huaweicloud.com/sdk-java-devg-obs/zh-cn_topic_0142815500.html
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)