amazon-web-services - aws s3 java sdk 列表对象

标签 amazon-web-services aws-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 文件夹中所有文件夹的列表:例如 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/

相关文章:

amazon-web-services - terraform和eksctl的优缺点

amazon-web-services - 从 CloudFormation 模板生成代码(java、python 等)

spring-boot - Elasticsearch Resthighlevelclient 将数据索引到 AWS Elasticsearch 服务时出现 Noclassfound 错误

java - 如何使用 java 将文件上传到 AWS 中的预签名 URL?

aws-lambda - 上传 lambda 时出错“无法将项目导出到 jar”

python - 如何在 AWS RDS 中查看数据库的内容?

java - 如何从 AWS 访问 RDS 数据库

proxy - 要使用哪个 Amazon EC2 实例?

java.lang.IllegalArgumentException : hostname cannot be null when trying to obtain AWS ECR Authentication Token 异常

python - AWS 批处理 :/usr/local/bin/python: cannot execute binary file