首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Amzon s3 Java API列出基目录的子目录

Amzon s3 Java API列出基目录的子目录
EN

Stack Overflow用户
提问于 2016-11-30 17:14:00
回答 1查看 74关注 0票数 0

我有以下亚马逊密钥结构:

代码语言:javascript
复制
as3/basedir/dir-1/file-1.txt
as3/basedir/dir-2/file-2.txt
as3/basedir/dir-3/file-3.txt
as3/basedir/dir-4/file-4.txt
as3/basedir/dir-5/file-5.txt
as3/basedir/dir-6/dir-6-1/file-6.txt
as3/basedir/dir-7/dir-7-1/file-7.txt
as3/basedir/dir-8/dir-8-1/file-8.txt
as3/basedir/dir-9/dir-9-1/file-9.txt
as3/basedir/dir-10/dir-10-1/file-10.txt

以列表的形式获取输出,即subdir name。

=> 1.请求密钥前缀=/as3/basedir/

代码语言:javascript
复制
Output List: [dir-1,dir-2,dir-3,dir-4,dir-5]

=> 2.请求密钥前缀=/as3/basedir/dir-6/

代码语言:javascript
复制
Output List: [dir-6-1]
EN

回答 1

Stack Overflow用户

发布于 2016-11-30 20:05:09

下面的Java方法解决了我上面的问题:

代码语言:javascript
复制
    /**
     * Listing just the sub dirs in an s3 bucket
     * @param prefix
     * @param limit
     * @return list of subdirs
     */
    public List<String> getSubDirInAS3(String prefix,Integer limit) {
        final String DELIMITER ="/";
        if (!prefix.endsWith(DELIMITER)) {
            prefix += DELIMITER;
        }
        List<String> paths = new ArrayList<String>();
        ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
                .withBucketName(config.getBucketName()).withPrefix(prefix)
                .withMaxKeys(limit).withDelimiter(DELIMITER);
        ObjectListing currentListing = client.listObjects(listObjectsRequest);

        while (currentListing == null || currentListing.isTruncated()) {
            currentListing = client.listNextBatchOfObjects(currentListing);
            paths.addAll(currentListing.getCommonPrefixes());
            //currentListing.setMarker(currentListing.getNextMarker());
        }
        return paths;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40884289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档