阿里云oss接口listObjects获取文件列表出现空目录

本文介绍了阿里云OSS对象存储中文件夹概念的理解误区及listObjects接口的正确使用方法,并探讨了如何避免获取到空目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oss对象存储实际没有文件夹的概念,只是有些可视化工具模拟的文件夹功能,如果手动操作可能导致一些问题。

接口listObjects

该接口可以获取指定前缀目录下的文件列表,下面代码copy自阿里云oss官方文档。
注意:该接口需要使用aliyun-sdk-oss2.3.0以上版本,使用aliyun-openservices2.0.4版本可能没有该接口

// 构造ListObjectsRequest请求
ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
// "/" 为文件夹的分隔符
listObjectsRequest.setDelimiter("/");
// 列出fun目录下的所有文件和文件夹
listObjectsRequest.setPrefix("fun/");
ObjectListing listing = ossClient.listObjects(listObjectsRequest);
// 遍历所有Object
System.out.println("Objects:");
//OSSobjectSummary下包含目录下所有的文件,不包含子目录
for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
    System.out.println(objectSummary.getKey());
}
// 遍历所有CommonPrefix
System.out.println("\nCommonPrefixs:");
for (String commonPrefix : listing.getCommonPrefixes()) {
    System.out.println(commonPrefix);
}

输出:

Objects:
fun/test.jpg
CommonPrefixs:
fun/movie/

但是在使用过程中从OSSobjectSummary获取的文件出现了空目录,如:aaa/bbb/和aaa/bbb/说明文档.doc两个文件。

出现这种问题的原因是aaa/bbb/目录是手动创建的,被认为是一个空的object了,如果使用putFile上传文件接口上传文件,是不会出现这个问题的,但是为了程序健壮性,获取文件列表时可以对空目录进行过滤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值