我写了一些代码,从文本文件中读取下载链接,并使用apaches commons-io库中的copyURLToFile方法下载视频,当我在我的wlan中时,下载速度非常慢。 当我放入一个互联网棒时,虽然棒有4mbit而且我的wlan是8 mbit,所以大约快了6倍。 我也尝试在没有commons-io库的情况下这样做,但问题是一样的。 通常我在我的wlan中下载600-700 kb / s但是使用java它只下载大约50 kb / s。随着互联网坚持其约300 kb / s。 你知道问题可能是什么吗?
提前致谢
//编辑:这是代码,但我不认为它与此有任何关系,你对网络政策有什么意义?
FileInputStream fstream = new FileInputStream(linksFile);
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String link;
String name;
while ((link = br.readLine()) != null) {
name = br.readLine();
FileUtils.copyURLToFile(new URL(link), new File("videos/"+name+".flv"));;
System.out.println(link);
}
答案 0 :(得分:1)
这不太可能是Java问题。
您发布的代码实际上并不通过网络执行任何IO - 它只是确定一个URL并将其传递给(可能是Apache Commons')FileUtils.copyURLToFile
。像往常一样受欢迎的第三方库,如果这种方法中有一个错误导致除了最不寻常的情况之外的所有情况都会导致吞吐量缓慢,那么它已经被识别出来(并且希望已经修复)。
因此,问题将出现在其他地方。通过普通的HTTP方法(例如在浏览器中)访问资源时,您是否获得了预期的速度?如果没有,那么在操作系统级别存在普遍问题。否则,我会查看您网络上的政策。
有两种可能的原因让人想起:
在任何情况下,几乎肯定是而不是错误的Java代码。
答案 1 :(得分:0)
FileUtils.copyURLToFile内部使用缓冲区来读取。 增加缓冲区的值可以加快下载速度,但这似乎是不可能的。