OBS JAVA SDK 实践4:统计指定目录下的文件和子目录大小
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
- 点赞
- 收藏
- 关注作者
评论(0)