【发布时间】:2011-09-05 19:56:13
【问题描述】:
只是问一下,你会怎么做。
我知道有办法获得总百分比来通知用户下载进度,但我不知道如何在时间上做类似的事情。
例如“距离下载完成的时间:5 分钟”。
我只知道百分比,写入写入的字节然后将其除以长度并将其转换为百分比(如果我没记错的话,几个月没有做上述事情了,所以我很生疏而且很健忘)
谢谢,出于好奇。
【问题讨论】:
-
请不要编辑您的问题以说它已完成。
只是问一下,你会怎么做。
我知道有办法获得总百分比来通知用户下载进度,但我不知道如何在时间上做类似的事情。
例如“距离下载完成的时间:5 分钟”。
我只知道百分比,写入写入的字节然后将其除以长度并将其转换为百分比(如果我没记错的话,几个月没有做上述事情了,所以我很生疏而且很健忘)
谢谢,出于好奇。
【问题讨论】:
对于完全线性的模型,您只需将剩余要下载的字节数除以目前的平均下载速度:
double avgSpeed = (double) bytesDownloaded / timeElapsed;
double timeLeft = byteLeftToDownload / avgSpeed;
如果您在所有地方都坚持毫秒,timeLeft 将包含估计的毫秒数,直到下载完整文件。
要以小时和/或分钟和/或秒为单位正确输出,我建议你看看
【讨论】:
是的,你可以。
不,没有什么“内置”的。
您的问题实际上(至少)有两个部分:
1) 如何确定时间?
2) 如何显示?
建议: 谷歌搜索“Java 状态栏”,并查看一些可能符合您要求的代码。
建议: 查看 MS Vista 的“剩余时间”算法。无论 Vista 在做什么 - 不要那样做 ;)
【讨论】: