0

我试图找到更新进度条的最佳方法,同时从存储在内部存储中的文本文件中读取记录。在我的活动片段中,我使用一个按钮来加载一个带有要更新的进度条的进度对话框。

问题是如果文本文件有超过 2000 条记录(每行 1 条记录),我是否应该在加载记录之前计算文本文件中的行数,并使用此值来估计进度条的完成百分比?或者有没有更优雅的方式来做到这一点?

4

3 回答 3

0

如果您想知道文件的大小(以行为单位),并且没有Long.MAX_VALUE(即 9223372036854775807)的行,您可以使用以下方法:

LineNumberReader  lnr = new LineNumberReader(new FileReader(new File("File1")));  
lnr.skip(Long.MAX_VALUE);  
System.out.println(lnr.getLineNumber());

(摘自:Java 文件中的行数

于 2013-09-15T08:50:48.483 回答
0

进度条的准确性并不重要,反应灵敏更重要。我只是获取文件的大小并将进度条更新为字节读取/文件大小。读取整个文件以计算其记录数可能会非常昂贵,而且不会给您带来太多好处。

于 2013-09-15T08:45:06.313 回答
0

使用文件大小并计算每次读取的字节数怎么样?

int sizeInBytes = file.length();
int currentBytes = 0;

//READ A LINE
currentBytes += line.length();
updateProgress((currentBytes/sizeInBytes)*100);
于 2013-09-15T09:54:30.637 回答