原理:获取目标文件的大小,在本地创建一个相同大小的文件,并计算每个线程需要下载的起始位置及大小,然后分配至每个线程独立下载,全部下载完毕则自动合并.
实现步骤
1. 查看并计算目标文件的大小
1 | URL url = new URL(mPath); |
2. 设置目标文件在本地的映射
1 | RandomAccessFile raf = new RandomAccessFile( |
3. 开启子线程并分配下载任务
1 | int blokeSize = length / mTotalCount; |
4. 子线程中的具体逻辑
1 | public void run() { |
备注:如果不使用断点下载,只需要将判断和存储历史下载信息的逻辑删除即可。