`

java断点续传原理总结

    博客分类:
  • JAVA
阅读更多

断点续传总结

断点续传的原理:

断点续传的原理很简单,就是在HTTP请求上和一般下载有所不同而已,所谓断点续传,也就是要从文件已经下载的地方开始继续下载。所以在客户端浏览器传给 Web 服务器的时候要多加一条信息 -- 从哪里开始下载。

 

断点续传的内核:

<!--[if !supportLists]-->1)  1使用net包中提供下载设置断点续传的开始位置

HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection();


httpConnection.setRequestProperty("RANGE","bytes=2000070");

 

<!--[if !supportLists]-->2)  2保存文件采用可保存记录的RandomAccessFile,这样就可以用seek()方法访问记录并读取。

RandomAccess oSavedFile = new RandomAccessFile("down.zip","rw"); 
long nPos = 2000070;
// 定位文件指针到 nPos 位置 

oSavedFile.seek(nPos);

 

断点续传的实现:

<!--[if !supportLists]-->1)  1通过远程url和本地保存目录开始运行

<!--[if !supportLists]-->2)  2通过远程url获取文件大小

<!--[if !supportLists]-->3)  3通过本地临时文件info和远程文件比较大小判断是否有本地文件下载完毕

<!--[if !supportLists]-->4)  4未下载完成的开始断点下载

<!--[if !supportLists]-->5)  5完成后删除临时文件

<!--[if !supportLists]-->6)  <!--[endif]-->流程图如下

 

断点续传注意点:

1)判断是否下载完成,需要首先和临时文件下载到的位置和临时文件下载的总长度对比

2)在已下载的的前提下,下次下载需先读取到下载的位置,从当前位置继续下载

3)在操作数据流的时候,读取完毕记得关闭数据流。连接用完也要关闭,避免线程继续运行,导致操作文件失败的情况。

4)在重命名文件失败的情况,可换另一种方式,先复制出新文件,在删除老文件。


<!--[endif]-->

 

 

  • 大小: 33.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics