我写了一个简单的Java下载器,但是速度有些问题。
一开始,速度还可以 - 就像我使用浏览器下载文件时一样。但是过一段时间后,速度就会大大降低,并且每两秒钟就会变化一次 - 从42kb/s到64kb/s,从64kb/s到42kb/s。
我的代码:
InputStream is = null;
FileOutputStream os = null;
os = new FileOutputStream(...);
URL u = new URL(...);
URLConnection uc = u.openConnection();
is = uc.getInputStream();
final byte[] buf = new byte[1024];
for(int count = is.read(buf);count != -1;count = is.read(buf)) {
os.write(buf, 0, count);
}
如何最大化下载速度?
更新
文件大小从1MB到约100MB不等。 我将缓冲区增加到65536,使其相同。
关于测量:我每隔3秒检查写入了多少字节,然后除以3再除以1024 - 这给出了kb / s。
count
的各个值相加如何?这似乎是衡量您已经下载了多少的最佳方法。 - CodesInChaos