You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java的S3 Client列出S3存储桶中的所有目录?

列出S3存储桶下目录的解决方案

想要列出特定S3存储桶下的目录,但S3 Client默认返回的是对象而非目录,之前在谷歌上没找到可行方案,研究后整理出以下解决方法:

private static List<String> listDirectoryFromS3FS(URI baseURI)
{
    UnderFsObjectMeta underFsObjectMeta = new UnderFsObjectMeta(baseURI);
    S3Client client = S3Client.builder().region(Region.US_EAST_1).build();
    ListObjectsV2Request request = ListObjectsV2Request.builder().bucket(underFsObjectMeta.m_sBucketName)
            .prefix(underFsObjectMeta.m_sDirectoryPath).delimiter(Utility.PART_FILE_SEPARATOR).build();
    List<CommonPrefix> prefixes = client.listObjectsV2(request).commonPrefixes();

    List<String> listDirectories = new LinkedList<>();
    for (CommonPrefix prefix:prefixes)
    {
        listDirectories.add(prefix.prefix());

    }

    return listDirectories;
}

核心逻辑说明

  • 借助ListObjectsV2Request,通过指定目标目录的prefix和路径分隔符delimiter,让S3返回对应路径下的所有子目录(以CommonPrefix集合形式)
  • 遍历commonPrefixes()结果,即可提取所有目录路径

内容的提问来源于stack exchange,提问作者maya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:05:50