我正在使用 amazon s3 java 库连接到我的 s3 存储桶并获取文件列表。 我需要递归地浏览这个目录。在这样做的时候,如果我遇到一个文件,我需要下载它。 如何在 S3 中区分目录和文件。
这是我的代码片段
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3 s3Client = new AmazonS3Client(credentials);
ObjectListing objectsListing = s3Client.listObjects(new ListObjectsRequest(bucketName, prefix, null, null, Integer.MAX_VALUE));
获取到上层目录的对象列表后,我需要获取目录和文件的列表并进行处理
如果有办法做到这一点,请帮我解决这个问题
谢谢
最佳答案
S3 并没有真正的“目录”。如果你愿意,你可以通过使用 setDelimiter 来假装。和 getCommonPrefixes ,但默认行为是列出存储桶中的所有对象,无论它们的键是否包含“/”。
如果您打算使用 AmazonS3Client 滚动自己的下载代码,请注意 S3 一次最多会从 listObjects 返回 1000 个键,即使您要求更多键也是如此。您需要检查 ObjectListing 上的 IsTruncated 标志,如果设置了循环并发送另一个带有标记集的请求以获取下一页结果。
最后但同样重要的是,我将为 TransferManager 类添加一个插件,其 downloadDirectory方法(keyPrefix 为“”)听起来好像只用一行代码就可以完成您想要的事情?
关于java - 亚马逊 AWS S3 桶递归提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30999057/