使用 Java 下载文件

Posted

技术标签:

【中文标题】使用 Java 下载文件【英文标题】:Downloading files with Java 【发布时间】:2012-01-14 08:37:04 【问题描述】:

我已经编写了一些代码来下载我所做的网络广播的一集。它获取剧集的 URL 并获取保存位置。但是,它最多只能下载 16MB,然后自动取消。我不完全确定要改变什么值来增加它。有可能吗,有人可以指出我正确的方向吗?谢谢!

下载代码:

    URL url = new URL(episode.getUrl());
    ReadableByteChannel rbc = Channels.newChannel(url.openStream());
    FileOutputStream fos = new FileOutputStream(episode.getLocalSave());
    fos.getChannel().transferFrom(rbc, 0, 1 << 24);

【问题讨论】:

如需进一步讨论,请参阅后面的参考,可能是原始代码 sn-p ***.com/a/921400/939250 【参考方案1】:

快速浏览一下 transferFrom 的文档:

public abstract long transferFrom(ReadableByteChannel channel, long position, long count)

好吧。

计数的值 1

我想这就是你问题的答案:-)

【讨论】:

我现在觉得有点傻,谢谢!我真的从没想过要查看文档,我的错。 我的数学不太好,尤其是因为我现在有点不舒服——有人能告诉我如何将它增加到例如 200MB 吗?或者任何其他数量,真的。 :) 他最初弄错了,因为这个非常受欢迎的 StackOverlow 答案给大家带来了麻烦:***.com/questions/921262/… 请参阅this answer 了解更简单的文件下载方式。【参考方案2】:

这是另一个解决方案:

import java.io.*;
import java.net.*;
public class DownloadFile


    public static void main(String args[]) throws IOException
    

        java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL(episode.getUrl()).openStream());
        java.io.FileOutputStream fos = new java.io.FileOutputStream(episode.getLocalSave());
        java.io.BufferedOutputStream bout = new BufferedOutputStream(fos);
        byte data[] = new byte[1024];
        int read;
        while((read = in.read(data,0,1024))>=0)
        
            bout.write(data, 0, read);
        
        bout.close();
        in.close();
    

【讨论】:

以上是关于使用 Java 下载文件的主要内容,如果未能解决你的问题,请参考以下文章

java使用浏览器请求下载pdf文件

使用 Java 下载文件

使用 Java、Struts 2 和 AJAX 下载文件

使用 Java 从 Github 下载二进制文件

使用字节[]的Java下载文件[重复]

使用 Java 中的 Selenium WebDriver 下载 zip 文件 - 下载弹出窗口总是来