Android 如何批量读取TXT文件?
现在我正在开发一个阅读器。如果txt文件太大,它将花费很长时间来读取并且没有响应。所以我想设置一个方法,就像它可以读取沐浴中的txt文件一样 我写下面的代码。它可以把这一页翻回去。但它不能连续翻页。我该怎么办Android 如何批量读取TXT文件?,android,Android,现在我正在开发一个阅读器。如果txt文件太大,它将花费很长时间来读取并且没有响应。所以我想设置一个方法,就像它可以读取沐浴中的txt文件一样 我写下面的代码。它可以把这一页翻回去。但它不能连续翻页。我该怎么办 Vector string; int begin = 0; public void readTxtByPage(String fileName) { string.clear(); FileReader fr = null; Bu
Vector string;
int begin = 0;
public void readTxtByPage(String fileName) {
string.clear();
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader(filePath + fileName);
br = new BufferedReader(fr);
br.skip(begin);
String content = "";
char ch;
int line = 0;
int w;
int len;
int start;
FontMetrics fm = paint.getFontMetrics();
fontHeight = (int) Math.ceil(fm.descent - fm.top) + 2;
pageLineNum = textHeight / fontHeight;
float[] widths = new float[1];
while ((content = br.readLine()) != null) {
len = content.length();
w = 0;
start = 0;
for (int i = 0; i < len; i++) {
ch = content.charAt(i);
paint.getTextWidths(String.valueOf(ch), widths);
w += Math.ceil(widths[0]);
if (w > textWidth) {
string.addElement(content.substring(start, i));
begin += (i - start);
start = i;
w = 0;
line++;
if (line >= pageLineNum) {
System.out.println("begin===>"+begin);
return;
}
}
}
string.addElement(content.substring(start));
begin += (len + 2 - start);
line++;
if (line >= pageLineNum) {
return;
}
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
br.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return;
}
向量字符串;
int begin=0;
public void readTxtByPage(字符串文件名){
string.clear();
FileReader fr=null;
BufferedReader br=null;
试一试{
fr=新文件读取器(文件路径+文件名);
br=新的缓冲读取器(fr);
br.跳过(开始);
字符串内容=”;
char ch;
内线=0;
int w;
内伦;
int启动;
FontMetrics fm=paint.getFontMetrics();
fontHeight=(int)Math.ceil(fm.dence-fm.top)+2;
pageLineNum=文本高度/字体高度;
浮动[]宽度=新浮动[1];
而((content=br.readLine())!=null){
len=content.length();
w=0;
开始=0;
对于(int i=0;i文本宽度){
addElement(content.substring(start,i));
开始+=(i-开始);
开始=i;
w=0;
line++;
如果(行>=pageLineNum){
System.out.println(“begin==>”+begin);
返回;
}
}
}
string.addElement(content.substring(start));
开始+=(len+2-开始);
line++;
如果(行>=pageLineNum){
返回;
}
}
}捕获(例外e){
e、 printStackTrace();
}最后{
试一试{
br.close();
fr.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
返回;
}
提前谢谢 听起来,如果你在后台线程中完成这项工作最好,那么,你可以告诉读者睡觉,然后在你希望线程再次开始阅读时通知它。这样它就不会冻结你的用户界面,并且可以批量读取数据。可能会在onTouchEvent期间通知线程