多线程与断线续传
来源:互联网 发布:mac os 同版本更新 编辑:程序博客网 时间:2024/05/21 17:30
Android多线程下载与断线续传
断点续传和断点下载都是用的RandomAccessFile, 它具有移动指定的文件大小的位置的功能seek 。
断点续传是由服务器给客户端一个已经上传的位置标记position,然后客户端再将文件指针移动到 相应的position,通过输入流将文件剩余部分读出来传输给服务器
text
使用多线程的好处:使用多线程下载会提升文件下载的速度。那么多线程下载文件的过程是:
断点下载 是由客户端告诉服务器已经下载的大小,然后服务器会将指针移动到相应的position,继续读
出,把文件返回给客户端。 当然为了下载的更快一下,也可以多线程下载,那么基本实现就是给每个线
程分配固定的字节的文件,分别去读
(1)首先获得下载文件的长度,然后设置本地文件的长度。
HttpURLConnection.getContentLength();//获取下载文件的长度 RandomAccessFile file = new RandomAccessFile("QQWubiSetup.exe","rwd"); file.setLength(filesize);//设置本地文件的长度
(2)根据文件长度和线程数计算每条线程下载的数据长度和下载位置。
如:文件的长度为6M,线程数为3,那么,每条线程下载的数据长度为2M,
(3)使用Http的Range头字段指定每条线程从文件的什么位置开始下载,下载到什么位置为止,
如:指定从文件的2M位置开始下载,下载到位置(4M-1byte)为止 代码如下:HttpURLConnection.setRequestProperty("Range", "bytes=2097152-4194303");
(4)保存文件,使用RandomAccessFile类指定每条线程从本地文件的什么位置开始写入数据。
RandomAccessFile threadfile = new RandomAccessFile("QQWubiSetup.exe ","rwd");threadfile.seek(2097152);//从文件的什么位置开始写入数据
0 0
- 多线程与断线续传
- 断线续传
- android 断线续传
- 断线
- Android单线程断线续传(数据库存储下载节点)
- 【VB.NET】网络断线与连接代码
- 中断线屏蔽与禁用什么区别?
- 续ADSL自动断线之迷
- NuGet包断线续传下载
- NuGet包断线续传下载
- netty 心跳与IdleStateHandler与断线重连
- POJ-1269判断线与线的关系
- 推送服务的心跳与断线重连
- 浅析 Netty 实现心跳机制与断线重连
- 浅析Netty实现心跳机制与断线重连
- 实现类似与ArcMap中的split tool的功能-----用点打断线
- SQL -- 判断线是否与面相交或者在其内部
- ios socket第三方框架 AsyncSocket使用简介,连接,心跳,断线,数据发送与接收
- sql中批量修改网址,把不完整的网址补全
- Navigation需要资料
- Android高仿京东、天猫下拉刷新
- C++基类和派生类私有、保护、公有成员访问控制以及动态绑定、三种继承
- Emulation环境变量
- 多线程与断线续传
- Mysql命令行操作用户与数据表等
- JAVA中的CMD命令集合
- webgate 重构 进度计划及总结 1
- android数据的5中储存方式
- 如何将已有项目迁移到Spring Boot
- 粗解Vue.js的render方法
- 5-15 生成3的乘方表 (15分)
- 使用nginx与nginx-rtmp-module搭建流媒体服务器