对象存储,listObjects 列表过滤,如何显示文件夹('/'结尾的空文件)?

  • 回答 (1)
  • 关注 (0)
  • 查看 (74)

项目使用场景里面有文件夹的概念 根据 文档 升级到XML Java SDK 1)没有单独的目录接口

描述,如果想显示文件夹,需建立 以'/'结尾的空文件

但是当我调用 listObjects 接口时 参数'delimiter' 设置为'/'时,不能取到下面的 '子目录',请问应该怎么达到取到目录,而不显示出目录下文件的目的, 如果delimiter 设置为空,则显示出所有文件。谢谢解答

String path = "";
String delimiter = "/";
String nextMarker = null;
int pageSize = 300;
ListObjectsRequest request = new ListObjectsRequest();
request.setBucketName(bucketName);
request.setDelimiter(delimiter);
request.setPrefix(path);
request.setMaxKeys(pageSize);
request.setMarker(nextMarker);
ObjectListing objectListing = cosClient.listObjects(request);
用户5215646用户5215646提问于
用户2661452回答于
推荐

你好,您可以参考下面的程序获取目录,而排除掉文件对象:

ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
listObjectsRequest.setBucketName(bucketName);
listObjectsRequest.setPrefix("");
listObjectsRequest.setMarker("");
listObjectsRequest.setDelimiter("/");
listObjectsRequest.setMaxKeys(1000);
ObjectListing objectListing = cosClient.listObjects(listObjectsRequest);
 List<String> commonPrefixes = objectListing.getCommonPrefixes();

objectListing包含objectSummaries和commonPrefixes,你可以把commonPrefixes当成目录:

此外,获取所有文件或目录,可以在下次listObjects请求的时候,将marker设置为上一次listObjects请求获取得到的nextMarker。

可能回答问题的人

  • 波斯狗儿

    5 粉丝0 提问28 回答
  • galenye

    腾讯 · 工程师 (已认证)

    5 粉丝0 提问29 回答
  • Jinqn

    腾讯 · 高级工程师 (已认证)

    10 粉丝0 提问50 回答
  • 杨泽华

    腾讯云 · 高级解决方案架构师 (已认证)

    14 粉丝0 提问0 回答
  • 售中交付团队

    腾讯 · 售中项目经理 (已认证)

    1 粉丝0 提问0 回答
  • Knightseal

    0 粉丝0 提问0 回答

扫码关注云+社区