AWS SDK Java TransferManager限制下载大小



我目前正在通过以下代码段将名称与前缀x_匹配的S3文件夹下载到本地TMP_FOLDER

TransferManager transferManager = TransferManagerBuilder.standard().withS3Client(s3Instance).build();
MultipleFileDownload multipleFileDownload = transferManager.downloadDirectory(S3_BUCKET, "prefix_", TMP_FOLDER);
multipleFileDownload.waitForCompletion();
transferManager.shutdownNow();

问题是我的机器磁盘空间不足,因为我试图下载的文件夹很大(它们包含许多微小的文本文件,但总的来说,每个文件夹的大小高达几个GiB(。

所以,我的问题是,有没有办法限制TransferManagerMultipleFileDownload只下载特定大小的数据?

理想情况下,它应该一个接一个地下载小文件,检查下一个文件是否超过了预定义的限制,如果超过了,就停止(这将避免最后有任何不完整的文件(

(当然,我假设没有一个文本文件本身会大于设定的限制(

您可以使用getProgress().getBytesTransferredMethod()来跟踪从S3上传/下载的文件大小。当您达到文件限制时,您可以暂停/中止S3传输,稍后再继续。以下链接可能对您有所帮助:

  • TransferManager
  • 使用transferManager示例

最新更新