我正从我的大四学生那里得到一项任务,以显示每秒显示大小传输速率的功能。
我必须使用我的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)
在下载过程中显示传输速率的最简单方法是显示目前下载部分的平均传输速率。
换句话说,在您下载每千字节后,您计算当前传输速率(到目前为止的总数据/下载所需的时间)并更新您的显示。