Java开发

Jsoup的使用教程(7)-大文件内容获取问题

2025-01-22 36 0

简介 Jsoup的使用教程----大文件内容获取问题

在采集数据时,经常会遇到一些较大的文件,如包含大量文本信息的 HTML 文件、 大小超过 10M 的图片、PDF 和 ZIP 等文件。在默认情况下,Jsoup 最大只能获取 1M的文件。因此,直接使用 Jsoup 请求包含大量文本信息的 HTML 文件,将导致获取的 内容不全;请求下载大小超过 1M 的图片和 ZIP 等文件,将导致文件无法查看或解压。

但在 Jsoup 中,可以使用 maxBodySize(int bytes)设置请求文件大小限制,来避免这种 问题的出现。另外,在请求大文件时,设置的超时 时间也需尽量长些。

public class JsoupConnectBodySize1 {
    public static void main(String[] args) throws IOException {
        String url = "https://www-us.******.org/dist//httpd/httpd-2.4.37.tar.gz";
        //超时时间设置长一些,下载大文件
        Connection.Response response = Jsoup.connect(url)
                .timeout(10*60*1000)
                .maxBodySize(Integer.MAX_VALUE)
                .method(Connection.Method.GET)
                .ignoreContentType(true)
                .execute();
        //如果响应成功,则执行下面的操作
        if (response.statusCode() == 200) {
            //响应转化成输出流
            BufferedInputStream bufferedInputStream = response.bodyStream();
            //保存图片
            saveFile(bufferedInputStream,"image/httpd-2.4.37.tar.gz");
        }
    }


    static void saveFile(BufferedInputStream inputStream, String savePath) throws IOException {
        //一次最多读取1KB
        byte[] buffer = new byte[1024];
        int len = 0;
        //创建缓冲流
        FileOutputStream fileOutStream = new FileOutputStream(new File(savePath));
        BufferedOutputStream bufferedOut = new BufferedOutputStream(fileOutStream);
        //文件写入
        while ((len = inputStream.read(buffer, 0, 1024)) != -1) {
            bufferedOut.write(buffer, 0, len);
        }
        //缓冲流释放与关闭
        bufferedOut.flush(); bufferedOut.close();
    }
}


点赞 0

我的名片

网名:梦宇信息技术

职业:软件开发、Mes系统工程师

现居:福建省-福州市

QQ:703159

站点信息

  • 联系QQ:703159
  • 文章统计97篇文章
  • 标签总数6
  • 加我微信:扫码,加我微信