使用 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 下载文件的主要内容,如果未能解决你的问题,请参考以下文章