【问题标题】:Listing sub folders files path in an s3 bucket列出 s3 存储桶中的子文件夹文件路径
【发布时间】:2016-01-16 19:12:37
【问题描述】:

我的s3结构如下:

s3bucketname -> 一级密钥列表 -> 二级密钥列表 -> 三级密钥列表 -> 实际文件。

我需要做的是,给定 s3bucket 的名称以及第一级键和第三级的条目,我需要符合此条件的所有文件的路径,即某种通配符用于第二级键

谁能指出如何在java中做到这一点?

谢谢

【问题讨论】:

    标签: java amazon-s3


    【解决方案1】:

    我建议您浏览以下链接: http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3Client.html#listObjects%28com.amazonaws.services.s3.model.ListObjectsRequest%29

    http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/ObjectListing.html#getCommonPrefixes%28%29

    假设您的存储桶中有这样的层次结构:

    "foo/bar/baz/sample1.txt"
    "foo/bar/bash/sample2.txt"
    "foo/bar/bang/sample3.txt"
    "foo/boo/baz/sample4.txt"
    "foo/boo/bash/sample6.txt"
    "foo/boo/sample5.txt"
    

    你知道第一个键是“foo”,第三个键是“baz”,你可以调用 listObjects() api,前缀值为“foo/”,分隔符值为“/”,这将为您提供一个 ObjectListing,其中包含公共前缀列表中的两个条目,即“foo/bar/”和“foo/boo/”。然后,您可以将已知的第三个键“bash”附加到每个字符串,并再次使用 listObjects() api 获取所有对象。

    【讨论】:

      【解决方案2】:

      坦率地说,最简单的方法是获取所有具有已知前缀的对象的列表。然后,让您的代码查看返回的键以确定您想要的键。这将减少对 AWS 的调用。

      【讨论】:

        猜你喜欢
        • 2018-04-19
        • 2013-01-17
        • 2016-10-29
        • 1970-01-01
        • 2020-01-24
        • 1970-01-01
        • 2023-01-20
        • 2021-02-24
        • 2015-05-20
        相关资源
        最近更新 更多