3

如果我读取一个文件直到它到达一个空行并且想要创建一个有点准确的 JProgressBar 来确定读取何时完成,我该怎么做?

我问的原因是因为有些文件是在其他文件在和200ms之间读取的。2500ms10000ms

我正在做一些简单的事情来读取文件

boolean completed

while(!completed) {
    //read file
    if(reader == null) {
        completed = false;
    } 
}

那么有没有办法让进度条在这种情况下准确呢?(顺便说一下,文件的大小并不一定意味着在这种情况下读取时间会更少)

4

1 回答 1

6

使用文件的大小——这是你最好的衡量标准。

您展示的内容必须具有用户可以理解的含义。这是最重要的部分。如果进度条表示文件已处理的百分比,那就很容易理解、容易量化、容易计算和显示。这使您的进度条透明,这很重要。

想想用户如何看待它。你不需要编写某种预测智能,因为用户有大脑,他们可以得出自己的结论。因此,如果他们看到进度条在前半部分运行得很快,然后变慢,他们就知道它已经处理了文件的一半,但后半部分需要更长的时间。这就是他们需要知道的一切!他们可以得出自己的结论,即由于进度条变慢了,完成文件可能需要比前半部分指示的时间更长的时间。

事实上,用户可能已经对正在处理的文件有所了解。对于这个特定的文件,他们可能知道有用的(或长时间处理的)数据都在后半部分。所以当他们看到进度条变慢时,这是他们所预料的。这为用户提供了所需的透明度,让他们知道软件正在按应有的方式运行,并且他们可以就需要等待多长时间得出自己的结论。

当然,显示一个通用的估计“25% 的文件在 3 秒内处理完毕,因此我们估计额外的 9 秒才能完成”仍然很有用。这也是一个非常通用的透明等式,因此用户可以知道如何使用它并根据他们正在处理的文件的具体情况对其进行调整。

于 2012-04-19T16:14:49.163 回答