我正在努力下载一个软件上的文件,这是我得到的,它的sucesfully下载,我也可以取得进展,但还有一件事,我不知道该怎么做.测量下载速度.我很感激你的帮助.谢谢.
这是当前的下载方法代码
这是当前的下载方法代码
public void run() { OutputStream out = null; URLConnection conn = null; InputStream in = null; try { URL url1 = new URL(url); out = new BufferedOutputStream( new FileOutputStream(sysDir+"\\"+where)); conn = url1.openConnection(); in = conn.getInputStream(); byte[] buffer = new byte[1024]; int numRead; long numWritten = 0; double progress1; while ((numRead = in.read(buffer)) != -1) { out.write(buffer,numRead); numWritten += numRead; this.speed= (int) (((double) buffer.length)/8); progress1 = (double) numWritten; this.progress=(int) progress1; } } catch (Exception ex) { echo("Unknown Error: " + ex); } finally { try { if (in != null) { in.close(); } if (out != null) { out.close(); } } catch (IOException ex) { echo("Unknown Error: " + ex); } } }
解决方法
与测量任何东西的方式相同.
System.nanoTime()返回一个Long,您可以使用它来测量所需的时间:
Long start = System.nanoTime(); // do your read Long end = System.nanoTime();
现在你有了读取X字节所需的纳秒数.算一算,你就有了下载速度.
你很可能每秒都在寻找字节数.跟踪您已读取的总字节数,检查是否已经过了一秒.一秒钟后,根据您在该时间内读取的字节数计算出速率.重置总数,重复.