AWS SDK Java TransferManager 限制下载大小
AWS SDK Java TransferManager limit download size
我目前正在通过以下代码片段将名称与 prefix_ 匹配的 S3 文件夹下载到本地 TMP_FOLDER :
TransferManager transferManager = TransferManagerBuilder.standard().withS3Client(s3Instance).build();
MultipleFileDownload multipleFileDownload = transferManager.downloadDirectory(S3_BUCKET, "prefix_", TMP_FOLDER);
multipleFileDownload.waitForCompletion();
transferManager.shutdownNow();
问题是我的机器磁盘用完了 space 因为我要下载的那些文件夹很大(它们包含许多小文本文件,但总的来说每个文件夹的大小都增加了到几个 GiB)。
所以,我的问题是,有没有办法限制 TransferManager
或 MultipleFileDownload
仅下载特定大小的数据?
理想情况下,它应该一个一个地下载小文件,检查下一个文件是否超过预定义的限制,如果超过则停止(这将避免最后有任何不完整的文件)
(当然我假设 none 的文本文件本身会比建立的限制更大)
您可以使用 getProgress().getBytesTransferredMethod()
跟踪正在 uploaded/downloaded 的文件大小,从 S3.When 达到文件限制后,您可以 pause/abort S3 传输并稍后恢复.以下链接可能对您有所帮助:
我目前正在通过以下代码片段将名称与 prefix_ 匹配的 S3 文件夹下载到本地 TMP_FOLDER :
TransferManager transferManager = TransferManagerBuilder.standard().withS3Client(s3Instance).build();
MultipleFileDownload multipleFileDownload = transferManager.downloadDirectory(S3_BUCKET, "prefix_", TMP_FOLDER);
multipleFileDownload.waitForCompletion();
transferManager.shutdownNow();
问题是我的机器磁盘用完了 space 因为我要下载的那些文件夹很大(它们包含许多小文本文件,但总的来说每个文件夹的大小都增加了到几个 GiB)。
所以,我的问题是,有没有办法限制 TransferManager
或 MultipleFileDownload
仅下载特定大小的数据?
理想情况下,它应该一个一个地下载小文件,检查下一个文件是否超过预定义的限制,如果超过则停止(这将避免最后有任何不完整的文件)
(当然我假设 none 的文本文件本身会比建立的限制更大)
您可以使用 getProgress().getBytesTransferredMethod()
跟踪正在 uploaded/downloaded 的文件大小,从 S3.When 达到文件限制后,您可以 pause/abort S3 传输并稍后恢复.以下链接可能对您有所帮助: