5.java实现资源下载断点续传实现
1.需求场景
当我们下载文件时由于某种原因中断了连接,导致文件只下载了一部分到本地。
但是我们又不想重新开始下载,现在我们需要继续接着上次中断处继续下载文件。
2.模拟下载不完整的数据
这样的需求很难实现吗?其实不难。
首先为了重现暂停下载的场景,可以用这个方法:
在请求头中加入Range字段,这个字段可以告知服务器客户端需要获取的字节数据范围。
/**
* 下载网络资源的一部分
* @param startPosition 起始下载位置
* @param endPosition 终止下载位置
* @param urlAddress 网络资源的url
*/
public static void download(long startPosition, long endPosition,String urlAddress){
try {
URL url = new URL(urlAddress);// 获得网络资源的URL
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();// 获得连接对象
connection.setRequestProperty("User-Agent", "NetFox");// 设置请求属性
String rangeProperty = "bytes=" + startPosition + "-";// 定义请求范围属性
if (endPosition > 0) {
rangeProperty += endPosition;// 调整请求范围属性
}
connection.setRequestProperty("RANGE", rangeProperty);// 设置请求范围属性
connection.connect();// 连接网络资源
InputStream in = connection.getInputStream();// 获得输入流对象
String file = url.getFile();// 获得文件对象
String name = file.substring(file.lastIndexOf('/') + 1);</

浙公网安备 33010602011771号