【发布时间】:2018-06-05 13:26:02
【问题描述】:
假设我有一个名为 bucketSample 的 S3 存储桶。
我有不同的文件夹,例如 abc、def 和 xyz。
现在我在上述所有文件夹中都有多个前缀为 hij_ 的文件。
我想下载所有前缀为hij_ 的文件。 (例如hij_qwe.txt、hij_rty.pdf等)
我已经通过各种方式,但对于GetObject,我必须提供具体的对象名称,我只知道前缀。
使用 TransferManager 我可以下载文件夹 abc 的所有文件,但不能下载具有特定前缀的文件。
那么有什么方法可以只下载前缀为hij_的所有文件?
【问题讨论】:
-
如果您使用的是 TransferManager 的 downloadDirectory() 方法,那么您应该能够将 keyPrefix 设置为 abc/hij_ 并且它将下载具有该键前缀的所有对象。键前缀不必以文件夹名称结尾(S3 不是带有文件夹和文件的常规分层文件系统)。
-
非常感谢@jarmod,它成功了。但它也创建了相同的层次结构 abc/hij_ ,但我可以只下载没有层次结构的文件(文件夹结构),因为我的 abc 文件夹位于层次结构中太深,如 (bucket/qwe/rty/uio/... /abc),如果有什么方法可以实现,请告诉我。
-
您可以指定一个本地destinationDirectory,但我相信TransferManager 将始终根据您的密钥层次结构创建子文件夹。没有其他任何意义。当然,您可以在之后移动文件。
标签: java amazon-web-services amazon-s3 aws-sdk awss3transfermanager