Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jsoup下载文件,响应bodyStream只能下载1兆字节的文件_Java_Jsoup_Response_Fileinputstream - Fatal编程技术网

Java 使用jsoup下载文件,响应bodyStream只能下载1兆字节的文件

Java 使用jsoup下载文件,响应bodyStream只能下载1兆字节的文件,java,jsoup,response,fileinputstream,Java,Jsoup,Response,Fileinputstream,我使用jsoup从网站下载了一些文件,通过使用下面的代码,我可以得到文件下载响应体 private HttpConnection.Response getResponse3(String url, String resource_url) throws IOException { Response resource_download; resource_download = Jsoup.connect(resource_url) .method(Meth

我使用jsoup从网站下载了一些文件,通过使用下面的代码,我可以得到文件下载响应体

 private HttpConnection.Response getResponse3(String url, String resource_url) throws IOException {
    Response resource_download;
    resource_download = Jsoup.connect(resource_url)
            .method(Method.GET).header("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36")
            .header("Upgrade-Insecure-Requests", "1")
            .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
            .header("Accept-Encoding", "gzip, deflate, br")
            .header("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8")
            .header("Referer", url)
            .cookie("CASTGC", "TGT-1479-kzRU5mnAuwVmsfJFcaHDT1iIrD6V7C1kUvi6IMi")
            .followRedirects(true)
            .ignoreContentType(true)
            .execute();
    return resource_download;
}
然后,我将响应objet返回到另一个方法以获得文件下载。方法如下所示:

        File file = new File(downloadFilePath + fileName);
        BufferedInputStream inputStream = response.bodyStream();
        FileOutputStream fos = new FileOutputStream(file);
        byte[] buffer = new byte[1024];
        int len;
        while ((len = inputStream.read(buffer)) != -1) {
            fos.write(buffer, 0, len);
        }
        inputStream.close();
        fos.close();
但是,我只能下载1兆字节的文件,大约 七千万左右。所以我想知道为什么这些代码不能正常工作?有什么问题吗

我也读过一些建议,说最好使用HttpURLConnection来下载文件,而不是使用jsoup,但我之所以这样做,是因为我认为jsoup可以携带浏览器的cookie和一些其他信息来获得文件下载流,如果我向文件url发送另一个请求,我会再次编写这些信息和cookie。如果没有这些信息,服务器将检测到我,他们可能会拒绝我的访问。

请在.execute之前使用.maxBodySize0。

是您的文件文本吗?不是,这是一个普通文件,.rar或.zip等文件是的,我认为这是个好主意。。但它会一次将所有最大大小的数据加载到我的计算机内存中吗?如果文件太大,无法容纳100到200兆字节,这对我的计算机内存来说是一个很大的挑战吗?顺便说一下,在得到响应之前,我真的不知道文件有多大。有两种类型的解析器:DOM和SAX。DOM像Jsoup一样一次解析整个文件。若要避免将大文件加载到内存中,则需要SAX类型的解析器。它在读取文件时解析文件。