[英]Amazon S3 java sdk - download progress
嘗試從亞馬遜下載文件時,如何輸出干凈計數0 - 100%。 有很多關於如何進行上傳的示例,但它們似乎並不直接轉換為下載。
目前我正在做以下事情
TransferManager transferManager = new TransferManager(s3Client);
Download download = transferManager.download(s3Request, downloadedFile);
while (!download.isDone()) {
LOGGER.info("Downloaded >> " + download.getProgress().getPercentTransferred());
}
哪個確實有效,但是它會多次使用相同的值來控制控制台(假設它是線程化的)。
我知道我也可以這樣做:
ProgressListener listener = progressEvent -> LOGGER.info("Bytes transfer >> " + progressEvent.getBytesTransferred());
GetObjectRequest s3Request = new GetObjectRequest("swordfish-database", snapshot.getKey());
TransferManager transferManager = new TransferManager(s3Client);
Download download = transferManager.download(s3Request, downloadedFile);
download.addProgressListener(listener);
download.waitForCompletion();
哪個也有效但是,我放松了使用download.getProgress().getPercentTransferred()
的難易程度。 這是更正確的做法嗎?
最終我想獲得一個用於進度條的int。 有什么建議?
好吧,如果您為進度更新保留一個單獨的線程,那么我沒有看到第一種方法有任何問題 - 您可以添加類似TimeUnit.SECONDS.sleep(1)
來每秒更新進度而不是一直循環。 另一方面,在第二種方法中,你只需將getBytesTransferred()
除以getBytes()
來獲得百分比,這似乎也不太難:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.