所以我正在使用java设计一个下载管理器,我需要向用户展示下载速度。
下面是我用来查找以 KB/s 为单位的下载速度的代码,但我认为它不能正确测量下载速度。它测量我的下载速度非常不准确,从 5 KB/s 到 200000 KB/s,这很奇怪,我的实际下载速度大约是 500 KB/s。
MAX_BUFFER_SIZE 为 16384。
while (status == CURRENT) {
/* Size buffer according to how much of the
file is left to download. */
byte buffer[];
if (sizeOfFile - downloadedSize > MAX_BUFFER_SIZE) {
buffer = new byte[MAX_BUFFER_SIZE];
} else {
buffer = new byte[sizeOfFile - downloadedSize];
}
// Read from server into buffer and measuring download speed.
Long t1 = System.nanoTime();
int read = stream.read(buffer);
Long t2 = System.nanoTime();
downloadSpeed = ((double) read / (double)(t2 - t1)) * 1000000;
System.out.println(downloadSpeed);
if (read == -1)
break;
// Write buffer to file.
file.write(buffer, 0, read);
downloadedSize += read;
publish(downloadedSize);
while (status == PAUSED) {
Thread.sleep(1);
}
}
我无法弄清楚我的方法有什么问题。
提前致谢。