簡體   English   中英

Amazon S3 java sdk - 下載進度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM