我的结构如下:
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
文件夹中所有文件夹的列表:例如 v20170522、v20170622 等
。
这是我到目前为止所拥有的:
ListObjectsRequest listObjectsRequest = new ListObjectsRequest();
listObjectsRequest.setBucketName("common");
listObjectsRequest.setPrefix("test/");
listObjectsRequest.setDelimiter("/");
这只会返回 common/test
文件夹中的文件,而不是文件夹。当我删除分隔符时,我得到所有文件夹的所有子文件。有办法做到这一点吗?
最佳答案
重要的是要知道 S3 不是常规文件系统,并且列表操作的工作方式与您的预期略有不同。
调用 listObjects 时,您指定:
prefix
将结果限制为仅以指定前缀开头的键分隔符
导致listObjects将共享公共(public)前缀的所有键汇总到单个摘要列表结果中
您应该在返回的公共(public)前缀中找到“文件夹”,可通过getCommonPrefixes()访问.
有关更多信息,请参阅Listing Keys using Prefix and Delimiter .
关于amazon-web-services - aws s3 java sdk 列表对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42170842/