如何在仍然下载文件的同时显示每秒传输速率

我需要提供一个显示每秒大小传输速率的function。

我必须使用我的java代码从web下载文件,并在下载文件时显示每秒的传输速率。

在此处输入图像描述

请注意下面的代码不完全是我的,它是从这里获取下面的代码只能计算下载完成后的传输速率,但我目前不知道如何使代码每秒显示传输速率,任何概念的想法或代码建议?

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 "); } 

蒂洛

“你有这个循环,一次下载1024个字节。你可以在同一个循环中更新一些统计信息(和它们的显示)。也许不是每一次迭代,而是每一次。除非下载完全挂起,这将给你定期更新。如果它挂起,你需要第二个线程来轮询统计信息“