Android 如何批量读取TXT文件?

Android 如何批量读取TXT文件?,android,Android,现在我正在开发一个阅读器。如果txt文件太大,它将花费很长时间来读取并且没有响应。所以我想设置一个方法,就像它可以读取沐浴中的txt文件一样 我写下面的代码。它可以把这一页翻回去。但它不能连续翻页。我该怎么办 Vector string; int begin = 0; public void readTxtByPage(String fileName) { string.clear(); FileReader fr = null; Bu

现在我正在开发一个阅读器。如果txt文件太大,它将花费很长时间来读取并且没有响应。所以我想设置一个方法,就像它可以读取沐浴中的txt文件一样

我写下面的代码。它可以把这一页翻回去。但它不能连续翻页。我该怎么办

 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期间通知线程