繁体   English   中英

Amazon AWS S3存储桶递归获取

[英]Amazon AWS S3 bucket recursive fetch

我正在使用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确实没有“目录”。 如果愿意,可以使用setDelimitergetCommonPrefixes假装类似,但是默认行为是列出存储桶中的所有对象,而不管它们的键是否包含'/'。

如果要使用AmazonS3Client滚动下载代码,则值得注意的是,即使您要求更多,S3一次最多也可以从listObjects返回1000个键。 您将要检查ObjectListing上的IsTruncated标志,以及是否设置了循环,并发送另一个带有Marker的请求以获取下一页结果。

最后但并非最不重要的一点是,我将为TransferManager类插入一个插件,该类的downloadDirectory方法(带有keyPrefix的“”)听起来像只用一行代码就能完成您想要的?

S3中没有文件夹或目录。 诸如“ abc / pqr / mno.pdf”之类的文件名表示为mno.pdf,其中pqr文件夹与abc中的文件夹相同,但实际上它代表名称为“ abc / pqr / mno.pdf”的单个文件。

因此,递归访问逻辑应该进入正在访问文件的应用程序中。 应该为getObject方法提供完整路径,例如“ abc / pqr / mno.pdf”,以获取文件mno.pdf

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM