如果我读到一个文件,直到它到达一个空行并且想要在读取完成时创建一个稍微准确的JProgressBar,我该怎么做?
我想问的原因是因为某些文件内读取200ms其中为其他人之间取2500ms和10000ms.
我正在做一些简单的阅读文件
boolean completed
while(!completed) {
//read file
if(reader == null) {
completed = false;
}
}
Run Code Online (Sandbox Code Playgroud)
那么有没有办法让进度条准确适用于这样的情况?(顺便说一下,文件的大小并不一定意味着在这种情况下读取所需的时间更少)
使用文件的大小 - 这是您最好的衡量标准.
您展示的内容必须具有用户可以理解的含义.这是最重要的部分.如果进度条表示已处理文件的百分比,则这非常容易理解,易于量化,易于计算和显示.这使您的进度条透明,这才是重要的.
想想用户如何看待它.你不需要编写某种预测智能,因为用户有大脑,他们可以得出自己的结论.因此,如果他们看到进度条在前半段快速运行然后减速,他们知道它处理了一半的文件,但下半部分需要更长的时间.这就是他们需要知道的一切!他们可以得出自己的结论,即由于进度条减慢,完成文件所需的时间可能比上半年所示的时间长.
实际上,用户可能已经知道正在处理的文件.对于这个特定的文件,他们可能知道有用的(或长处理的)数据都在下半部分.因此,当他们看到进度条减慢时,预计它们就会出现.这为用户提供了所需的透明度,使他们知道软件正在按预期工作,并且他们可以得出他们需要等待多长时间的结论.
当然,显示一般估计"在3秒内处理25%的文件仍然有用,所以我们估计还有9秒完成." 这也是一个非常通用的基本方程,它是透明的,因此用户可以知道如何使用它并根据它们正在处理的文件的细节进行调整.