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)

你可能感兴趣的:(Java动手做一做之网络编程,java)