我制作自己的下载程序,目前的功能是:
一个。获取下载大小
湾进度
C。下载时间
d。下载速度(不确定)。
但我需要澄清这些:
下载程序是否使用相同的逻辑从Internet下载文件? 我的意思是在Java中我们使用FileOutputStream和InputStream。其他人用同样的方式吗?
目前我的下载速度估算代码为:
while ((bytesRead = reader.read(buffer)) != -1) {
writer.write(buffer, 0, bytesRead);
a = (int) (file.length() / 1024);
Thread.sleep(1000);
csize = (int) (((file.length() / 1024) * 100) / size);
progress.setValue(csize);
speed.setText("Speed: " + (a - b)+" KB");
remaining.setText("Remaining: "+String.valueOf((size - (file.length() / 2014)))+" KB");
b = a;
}
我已阅读此主题Measuring Download Speed Java, 但它计算总下载时间和速度,而不是每秒下载速度。我上面的代码显示了每秒的下载速度,但我不确定这是否正确。
我也在这个论坛的某个地方读到如果我将缓冲区从[1024]增加到[2048]或[4096] 它会提高我的下载速度,是真的吗?如何获得速度200kb ++? IDM可以做到这一点 对我来说。
提前致谢:)