OkHttps 實現(xiàn)分塊下載

2020-04-29 09:36 更新

  當(dāng)文件很大時,有時候我們會考慮分塊下載,與斷點續(xù)傳的思路是一樣的,示例代碼:

  1. static String url = "http://api.demo.com/download/test.zip"
  2. public static void main(String[] args) {
  3. long totalSize = HttpUtils.sync(url).get().getBody()
  4. .close() // 因為這次請求只是為了獲得文件大小,不消費(fèi)報文體,所以直接關(guān)閉
  5. .getContentLength(); // 獲得待下載文件的大?。ㄓ捎谖聪M(fèi)報文體,所以該請求不會消耗下載報文體的時間和網(wǎng)絡(luò)流量)
  6. download(totalSize, 0); // 從第 0 塊開始下載
  7. sleep(50000); // 等待下載完成(不然本例的主線程就結(jié)束啦)
  8. }
  9. static void download(long totalSize, int index) {
  10. long size = 3 * 1024 * 1024; // 每塊下載 3M
  11. long start = index * size;
  12. long end = Math.min(start + size, totalSize);
  13. HttpUtils.sync(url)
  14. .setRange(start, end) // 設(shè)置本次下載的范圍
  15. .get().getBody()
  16. .toFile("D:/download/test.zip") // 下載到同一個文件里
  17. .setAppended() // 開啟文件追加模式
  18. .setOnSuccess((File file) -> {
  19. if (end < totalSize) { // 若未下載完,則繼續(xù)下載下一塊
  20. download(totalSize, index + 1);
  21. } else {
  22. System.out.println("下載完成");
  23. }
  24. })
  25. .start();
  26. }

如果覺得 OkHttps 好用,就去點個 Star 吧,項目地址:


官方網(wǎng)站:http://okhttps.ejlchina.com/

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號