我需要提供一个显示每秒大小传输速率的功能。
我必须使用我的java代码从网上下载文件,并在下载文件时显示每秒的传输速率。
请注意下面的代码不完全是我的,它来自here 下面的代码只能在下载完成后计算传输速率,但我目前不知道如何使代码每秒显示传输速率,任何概念构思或代码建议吗?
public static void main(String argc[]) throws Exception {
long totalDownload = 0; // total bytes downloaded
final int BUFFER_SIZE = 1024; // size of the buffer
byte[] data = new byte[BUFFER_SIZE]; // buffer
BufferedInputStream in = new BufferedInputStream(
new URL(
"http://ipv4.download.thinkbroadband.com:8080/5MB.zip")
.openStream());
int dataRead = 0; // data read in each try
long startTime = System.nanoTime(); // starting time of download
while ((dataRead = in.read(data, 0, 1024)) > 0) {
totalDownload += dataRead; // adding data downloaded to total data
System.out.println(totalDownload);
}
/* download rate in bytes per second */
float bytesPerSec = totalDownload
/ ((System.nanoTime() - startTime) / 1000000000);
System.out.println(bytesPerSec + " Bps");
/* download rate in kilobytes per second */
float kbPerSec = bytesPerSec / (1024);
System.out.println(kbPerSec + " KBps ");
/* download rate in megabytes per second */
float mbPerSec = kbPerSec / (1024);
System.out.println(mbPerSec + " MBps ");
}
答案 0 :(得分:1)
蒂洛
"你有这个循环,一次下载1024个字节。您可以在同一循环中更新一些统计信息(及其显示)。也许不是在每一次迭代中,而是每一次。除非下载完全挂起,否则将为您提供定期更新。如果它挂起,您需要第二个线程来轮询统计信息"