java代码的性能下载非常慢
我写了一些代码,从文本文件中读取下载链接,并使用apaches commons io库中的CopyUrltFile方法下载视频,当我在wlan中使用im时,下载速度非常慢。 当我把一个互联网棒是大约6倍快,虽然棒得到4mbit和我的无线局域网是8Mbit。 我也试着在没有commons io库的情况下实现,但问题是一样的。 通常情况下,我会在wlan中以600-700 kb/s的速度下载,但使用java时,下载速度仅为50 kb/s左右。使用internet时,下载速度约为300 kb/s。 你知道问题出在哪里吗
提前谢谢
//编辑:这是代码,但我不认为这与此有关,你对网络it政策是什么意思
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);
}
# 1 楼答案
菲律蒂尔斯。copyURLToFile内部使用缓冲区进行读取。 增加缓冲区的值可以加快下载速度,但这似乎是不可能的
# 2 楼答案
这不太可能是Java问题
您发布的代码实际上没有在网络上执行任何IO操作——它只是确定一个URL并将其传递给(可能是Apache Commons')
FileUtils.copyURLToFile
。与流行的第三方库一样,如果该方法中有一个bug,导致除了最不寻常的情况之外的所有情况下的吞吐量都很慢,那么它应该已经被识别(并有望修复)因此,问题将在别处解决。通过正常的HTTP方法(例如在浏览器中)访问资源时,您是否获得了预期的速度?如果不是,那么在操作系统层面上就存在一个普遍的问题。否则,我会看看你们网络上的政策
两个可能的原因浮现在脑海中:
在任何情况下,几乎可以肯定的是,这不是Java代码的错