【问题标题】:Can Java be used to determine a duration of a download?可以使用 Java 来确定下载的持续时间吗?
【发布时间】:2011-09-05 19:56:13
【问题描述】:

只是问一下,你会怎么做。

我知道有办法获得总百分比来通知用户下载进度,但我不知道如何在时间上做类似的事情。

例如“距离下载完成的时间:5 分钟”。

我只知道百分比,写入写入的字节然后将其除以长度并将其转换为百分比(如果我没记错的话,几个月没有做上述事情了,所以我很生疏而且很健忘)

谢谢,出于好奇。

【问题讨论】:

  • 请不要编辑您的问题以说它已完成。

标签: java download duration


【解决方案1】:

对于完全线性的模型,您只需将剩余要下载的字节数除以目前的平均下载速度:

double avgSpeed = (double) bytesDownloaded / timeElapsed;
double timeLeft = byteLeftToDownload / avgSpeed;

如果您在所有地方都坚持毫秒,timeLeft 将包含估计的毫秒数,直到下载完整文件。

要以小时和/或分钟和/或秒为单位正确输出,我建议你看看

【讨论】:

  • 嗯,我没有足够的时间,我一直在努力让它工作一段时间:这是我的下载器pastebin.com/5ajyJxLk
  • 哦,谢谢,这就像一个魅力 :),我回来后会将其转换为分钟。
  • 没问题,不客气。如果您的问题已解决,请确保将问题标记为已解决。 (这也适用于您的其他问题!)
  • 好的,我回来了。只是在我的头顶上做了一个快速的方法(我能记住的唯一方法),它可以工作,但我如何格式化它,所以它不会只显示第一个/第二个数字的小数(例如 2 分钟或 20 分钟而不是 20.6328718891 或 0.209029422)... 我使用: ((timeLeft/60000) % 60) 希望在几分钟内获得输出;我不介意它是否下降到 0 分钟,然后我可以编辑字符串。抱歉最后一分钟“希望”:/ 我真的生疏了。
  • 你听说过一个叫“整数截断”的小东西吗? “格式化打印”怎么样。任何一个/两个都可以让你显示你想要的数字......
【解决方案2】:

是的,你可以。

不,没有什么“内置”的。

您的问题实际上(至少)有两个部分:

1) 如何确定时间?

2) 如何显示?

建议: 谷歌搜索“Java 状态栏”,并查看一些可能符合您要求的代码。

建议: 查看 MS Vista 的“剩余时间”算法。无论 Vista 在做什么 - 不要那样做 ;)

【讨论】:

  • 我知道如何显示它,但不确定确定时间。
  • 您最初的帖子没有具体说明 :) 即时计算时间的问题之一是“Vista 问题”:您可能会计算“还剩 8 小时”一个样本,并且“还剩 8 秒”下一个样本...
猜你喜欢
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多