温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java HTTP协议如何实现断点续传

发布时间:2025-08-29 10:16:32 来源:亿速云 阅读:107 作者:小樊 栏目:编程语言

在Java中,可以使用HTTP协议的Range头字段来实现断点续传。以下是一个简单的示例,展示了如何使用Java的HttpURLConnection类实现断点续传:

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpResumeDownload {

    public static void main(String[] args) {
        String fileUrl = "http://example.com/file.zip";
        String savePath = "file.zip";
        long startByte = 0; // 从0开始下载

        try {
            downloadFile(fileUrl, savePath, startByte);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void downloadFile(String fileUrl, String savePath, long startByte) throws IOException {
        URL url = new URL(fileUrl);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();

        // 设置请求头,告诉服务器从startByte开始下载
        connection.setRequestProperty("Range", "bytes=" + startByte + "-");

        // 设置其他请求属性
        connection.setReadTimeout(10000);
        connection.setConnectTimeout(10000);
        connection.setDoInput(true);
        connection.setDoOutput(false);
        connection.setRequestMethod("GET");

        // 获取响应码
        int responseCode = connection.getResponseCode();
        if (responseCode == HttpURLConnection.HTTP_PARTIAL || responseCode == HttpURLConnection.HTTP_OK) {
            // 获取输入流
            InputStream inputStream = connection.getInputStream();
            RandomAccessFile randomAccessFile = new RandomAccessFile(savePath, "rw");
            randomAccessFile.seek(startByte);

            // 写入文件
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                randomAccessFile.write(buffer, 0, bytesRead);
            }

            // 关闭输入流和文件
            inputStream.close();
            randomAccessFile.close();

            System.out.println("文件下载完成,从字节:" + startByte);
        } else {
            System.out.println("服务器不支持断点续传");
        }

        // 断开连接
        connection.disconnect();
    }
}

这个示例中,我们首先设置了一个文件的URL和保存路径。然后,我们调用downloadFile方法来下载文件。在这个方法中,我们创建了一个HttpURLConnection对象,并设置了Range请求头,告诉服务器从指定的字节开始下载。然后,我们获取响应码,如果服务器支持断点续传(HTTP_PARTIAL),我们就从指定的字节开始下载文件,并将其写入到本地文件中。

注意:这个示例仅用于演示目的,实际应用中可能需要处理更多的异常情况和边界条件。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手