gpt4 book ai didi

java - 亚马逊 AWS S3 桶递归提取

转载 作者:行者123 更新时间:2023-11-29 07:40:12 26 4
gpt4 key购买 nike

我正在使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com