AWS S3 Java SDK的对象列表
问题描述:
我有一个结构,像这样:AWS S3 Java SDK的对象列表
common/test/v20170522/part-0001.snappy
common/test/v20170522/part-0002.snappy
common/test/v20170522/part-0003.snappy
common/test/v20170522/part-0004.snappy
common/test/v20170622/part-0001.snappy
common/test/v20170622/part-0002.snappy
common/test/v20170622/part-0003.snappy
common/test/v20170622/part-0004.snappy
有与他们有更多的文件多了很多版本的文件夹。我基本上想要列出test/common
文件夹中的所有文件夹:so v20170522, v20170622, etc
。
这是我到目前为止有:
ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
listObjectsRequest.setBucketName("common");
listObjectsRequest.setPrefix("test/");
listObjectsRequest.setDelimiter("/");
这将返回到我刚才是在common/test
文件夹中的文件,而不是文件夹。当我删除分隔符时,我得到所有文件夹的所有子文件。有没有办法做到这一点?
答
重要的是要知道,S3不是一个普通的文件系统,并且列表操作与你期望的有些不同。
当调用listObjects,指定:
-
prefix
这就限制了结果只以指定前缀 -
delimiter
导致listObjects卷起共享一个共同的前缀为所有按键开始这些密钥单个汇总列表结果
您应该在返回的通用前缀中找到'文件夹',可通过getCommonPrefixes()访问。
欲了解更多信息,请参阅Listing Keys using Prefix and Delimiter。
getCommonPrefixes()? – jarmod
就是这样!谢谢! –
太棒了,很高兴它有帮助。已添加作为一个更多的上下文的答案。 – jarmod