美文网首页
多线程断点续传下载关键点解析

多线程断点续传下载关键点解析

作者: sofarsogoo_932d | 来源:发表于2018-03-27 13:59 被阅读0次

何为多线程断点续传下载

将一个文件分成多个不同的部分,每个部分都由一个线程去下载,而且这些线程的下载是同时进行的,并且在下载被中断的时候,将文件下载的信息存储到本地数据库中,在下次下载的时候,接着上次下载的地方继续下载。

关键技术点解析

1. 获取下载文件的长度,并设置本地文件的长度

关键类 HttpURLConnection 和 RandomAccessFile

conn.getContentLength();     //获取下载文件长度,单位byte
raf = new RandomAccessFile(file, "rwd");
raf.setLength(length);       //设置本地文件长度
2. 根据文件长度和线程数,计算每条线程下载的数据长度和位置
int len = (int) mFileInfo.getLength() / threadCount;
for (int i = 0; i < threadCount; i++) {
    ThreadInfo threadInfo = new ThreadInfo();
    threadInfo.setStart(i * len);
    threadInfo.setEnd((i + 1) * len - 1);
    if (i == threadCount - 1) {
        threadInfo.setEnd(mFileInfo.getLength());
    }
}
3. 使用Http的Range头字段指定每条线程从文件的什么位置开始下载,下载到什么位置为止
 long start = mThreadInfo.getStart() + mThreadInfo.getFinished();
 conn.setRequestProperty("Range", "bytes=" + start + "-" + mThreadInfo.getEnd());
4. 保存文件,使用RandomAccessFile类指定每条线程从本地文件的什么位置开始写入数据。
raf = new RandomAccessFile(file, "rwd");
raf.seek(start);
5. 利用数据库保存线程下载的信息

断点续传
就是信号中断后(掉线或关机等),下次能够从上次的地方接着传送(一般指下载或上传)

前四点,讲述了如何进行多线程下载,但并不能做到断点续传,而如果想实现断点续传,就需要利用SQLite数据库,在中断的时候,将文件下载的进度存储到数据库中,方便下次从数据库记录的位置开始下载

mDao.updateThread(mThreadInfo.getUrl(),mThreadInfo.getId(), mThreadInfo.getFinished());

相关文章

  • Android下载文件(一)下载进度&断点续传

    索引 Android下载文件(一)下载进度&断点续传 Android下载文件(二)多线程并发&断点续传(待续) A...

  • Okhttp多线程断点续传

    目录 1、断点续传相关定义2、多线程下载实现方案 1、断点续传相关定义 1.1、断点续传: 记录上次下载的位置,下...

  • 实现Android多线程断点续传下载

    断点续传原理一、从上次的位置继续下载。 二、从上次写入的文件继续写入。 多线程结合断点续传下载 多线程无非是将待下...

  • 多线程断点续传下载关键点解析

    何为多线程断点续传下载 将一个文件分成多个不同的部分,每个部分都由一个线程去下载,而且这些线程的下载是同时进行的,...

  • 造轮子 - RxDownload

    基于RxJava打造的下载工具, 支持多线程下载和断点续传, 智能判断是否支持断点续传等功能 标签(空格分隔): ...

  • FileDownloader的简单使用

    FileDownlaoder 支持多任务下载 支持多线程下载 支持 断点续传 github地址:https://g...

  • 多线程断点

    Android多线程断点续传下载 原理 其实断点续传的原理很简单,从字面上理解,所谓断点续传就是从停止的地方重新下...

  • Android多线程下载

    Android 多线程下载,断点续传 https://github.com/liu8021203/Download...

  • 断点续传和下载原理

    文件上传客户端: 下面是多线程下载 断点续传和断点下载都是用的RandomAccessFile, 它具有移动指定的...

  • 最好的下载软件Progressive Downloader Ma

    Progressive Downloader中文版是mac上一款非常好用的下载软件,支持断点续传、多线程下载、内建...

网友评论

      本文标题:多线程断点续传下载关键点解析

      本文链接:https://www.haomeiwen.com/subject/titgpxtx.html