当前位置: 首页 > 面试题库 >

测量Java下载速度

吴缪文
2023-03-14
问题内容

我正在下载软件上的文件,这就是我所得到的,它可以成功下载,并且我也可以取得进展,但是还有1件事我不知道该怎么做。测量下载速度。多谢您的协助。谢谢。这是当前的下载方法代码

    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, 0, 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()返回一个a,Long您可以用它来衡量某件事情需要多长时间:

Long start = System.nanoTime();
// do your read
Long end = System.nanoTime();

现在,您拥有读取X字节所需的纳秒数。算一下,就可以确定下载速率。

您很有可能正在寻找每秒字节数。跟踪已读取的字节总数,检查是否已过去一秒钟。一秒钟之后,根据您在该时间内读取的字节数来计算出速率。重设总数,重复。



 类似资料:
  • 我不知道为什么会这样,但真的很烦人。我希望该文件是根据express docs下载的。我有下一个代码: 文件夹结构: 没有发生任何事情,错误未显示。有什么想法吗?

  • 9.1.1 功能介绍 批量下载功能为大家提供了同时下载多个站点的同一报告的入口,可以大大节省所花费的时间,提高日常工作效率。 9.1.2 使用方法 新建报告 从下拉框选择“批量下载“功能。 点击新建报告。 配置报告的方法同配置自定义报告相同。 关联站点 选择需要下载报告的站点。 下载报告 第一次下载报告需要输入用户名和密码(具体请查看邮件) 9.1.3 注意事项 批量下载和数据下载模块使用的是同一

  • 问题内容: 我正在下载文件,但是对于大文件,我每次都需要检查磁盘上文件的大小,因为我无法以百分比形式显示进度,并且我也想知道下载速度。我该怎么做呢?这是我的代码: 我认为一种方法是在循环中每次读取文件并根据标头计算进度百分比。但是对于大文件(大约500MB),这将再次成为问题。还有其他方法吗? 问题答案: 参见此处:Python进度栏和下载 我认为代码将是这样,它应该显示 自开始以来 的 平均速度

  • 问题内容: 我将作为个人练习用Java实现一个(简单的)下载器应用程序。它将在不同的线程中运行多个作业,以这种方式,我将在执行期间始终同时下载几个文件。 我希望能够定义在所有下载作业之间共享的下载速率限制,但是我不知道如何执行单个下载任务。我应该怎么做呢?我应该尝试实施哪些解决方案? 谢谢。 问题答案: 我将从管理所有下载的DownloadManager开始。 希望参与托管带宽的所有代码都将在开始

  • 问题内容: 我想以编程方式限制Java中的上传或下载操作。我假设我需要做的就是检查上传进行的速度并按以下方式进行相应插入: 上面的代码能用吗?如果没有,还有更好的方法吗?是否有描述理论的教程? 问题答案: 令牌桶算法是一种限制上传或下载带宽的方法。您应该阅读本文:它解释了此算法的用法。 使用番石榴RateLimiter: 如Guava文档中所述: 重要的是要注意,所请求的许可数量永远不会影响请求本

  • 我有一个关于C#的ftp库的问题。我需要从ftp服务器下载9000个txt文件。火车站ToUpper()是文件名,因此对于每个文件,我都需要一个新的ftp连接。对于一个文件,大约需要一秒钟。txt文件包含两行。因此,对于所有文件,大约需要一个半小时。是否有更好/更快的解决方案?