我试图找到更新进度条的最佳方法,同时从存储在内部存储中的文本文件中读取记录。在我的活动片段中,我使用一个按钮来加载一个带有要更新的进度条的进度对话框。
问题是如果文本文件有超过 2000 条记录(每行 1 条记录),我是否应该在加载记录之前计算文本文件中的行数,并使用此值来估计进度条的完成百分比?或者有没有更优雅的方式来做到这一点?
我试图找到更新进度条的最佳方法,同时从存储在内部存储中的文本文件中读取记录。在我的活动片段中,我使用一个按钮来加载一个带有要更新的进度条的进度对话框。
问题是如果文本文件有超过 2000 条记录(每行 1 条记录),我是否应该在加载记录之前计算文本文件中的行数,并使用此值来估计进度条的完成百分比?或者有没有更优雅的方式来做到这一点?
如果您想知道文件的大小(以行为单位),并且没有Long.MAX_VALUE(即 9223372036854775807)的行,您可以使用以下方法:
LineNumberReader lnr = new LineNumberReader(new FileReader(new File("File1")));
lnr.skip(Long.MAX_VALUE);
System.out.println(lnr.getLineNumber());
(摘自:Java 文件中的行数)
进度条的准确性并不重要,反应灵敏更重要。我只是获取文件的大小并将进度条更新为字节读取/文件大小。读取整个文件以计算其记录数可能会非常昂贵,而且不会给您带来太多好处。
使用文件大小并计算每次读取的字节数怎么样?
int sizeInBytes = file.length();
int currentBytes = 0;
//READ A LINE
currentBytes += line.length();
updateProgress((currentBytes/sizeInBytes)*100);