广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州OkHttps如何实现分块下载?_北大青鸟IT学校

作者:邓华发布时间:2021-06-14分类:Java技术浏览:865


导读:OkHttps如何实现分块下载?相信学过Java的同学都遇到过这个问题,那么答案是什么呢?接下来一起来看看惠州北大青鸟老师是怎么回答的。

OkHttps如何实现分块下载?相信学过Java的同学都遇到过这个问题,那么答案是什么呢?接下来一起来看看惠州北大青鸟老师是怎么回答的。

  当文件很大时,有时候我们会考虑分块下载,与断点续传的思路是一样的,示例代码:

  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()             // 因为这次请求只是为了获得文件大小,不消费报文体,所以直接关闭

  5.             .getContentLength(); // 获得待下载文件的大小(由于未消费报文体,所以该请求不会消耗下载报文体的时间和网络流量)

  6.     download(totalSize, 0);      // 从第 0 块开始下载

  7.     sleep(50000);                // 等待下载完成(不然本例的主线程就结束啦)

  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)                // 设置本次下载的范围

  15.             .get().getBody()

  16.             .toFile("D:/download/test.zip")      // 下载到同一个文件里

  17.             .setAppended()                       // 开启文件追加模式

  18.             .setOnSuccess((File file) -> {

  19.                 if (end < totalSize) {           // 若未下载完,则继续下载下一块

  20.                     download(totalSize, index + 1); 

  21.                 } else {

  22.                     System.out.println("下载完成");

  23.                 }

  24.             })

  25.             .start();

  26. }

相信通过上面老师的解答,大家应该知道OkHttps如何实现分块下载了吧!想了解更多关于Java的资讯,可以来惠州北大青鸟新方舟校区详细了解。

Java13.png

Java

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表