Android 读取包含超过130000行文本的大型文本文件

Android 读取包含超过130000行文本的大型文本文件,android,inputstream,bufferedreader,readline,large-files,Android,Inputstream,Bufferedreader,Readline,Large Files,如何将大型文本文件读入应用程序? 这是我的代码,但它不起作用。我的代码必须读取一个名为list.txt的文件。该代码仅适用于只有10.000行的文件。 有人能帮我吗? 谢谢 我的代码:(处理小文件,但不处理大文件) 因为您正在处理一个大文件,所以应该分块处理数据。在这里,您的文件读取是正常的,但随后继续在字符串缓冲区中添加所有行,并最终传递到Toast.makeText()。它在内存中创建了一个大的脚印。相反,您可以读取100-100行,并调用Toast.makeText()进行分块处理。还有一

如何将大型文本文件读入应用程序? 这是我的代码,但它不起作用。我的代码必须读取一个名为list.txt的文件。该代码仅适用于只有10.000行的文件。 有人能帮我吗? 谢谢

我的代码:(处理小文件,但不处理大文件)


因为您正在处理一个大文件,所以应该分块处理数据。在这里,您的文件读取是正常的,但随后继续在字符串缓冲区中添加所有行,并最终传递到Toast.makeText()。它在内存中创建了一个大的脚印。相反,您可以读取100-100行,并调用Toast.makeText()进行分块处理。还有一件事,使用字符串生成器而不是字符串缓冲区来避免不必要的同步开销。您在方法内部初始化了wwwdf2变量,但看起来它是一个实例变量,我认为这不是必需的。在方法中声明它以缩短其作用域。

请发布stacktrace。大文件有什么问题?它失败的地方和原因?欢迎使用StackOverflow,请也将错误stacktrace粘贴到这里。我不知道这段代码失败的原因,因为Android忽略了文本文件的加载,或者Android读取的时间很长,所以没有错误。@OpenSearch是否检查了logcat?请在这里贴红线。
   private void largefile(){

    String strLine2="";
    wwwdf2 = new StringBuffer();
    InputStream fis2 = this.getResources().openRawResource(R.raw.list);
    BufferedReader br2 = new BufferedReader(new InputStreamReader(fis2));
    if(fis2 != null) {
        try {
            LineNumberReader lnr = new LineNumberReader(br2);
            String linenumber = String.valueOf(lnr);

            while ((strLine2 = br2.readLine()) != null) {
                wwwdf2.append(strLine2 + "\n");
            }
           // Toast.makeText(getApplicationContext(), linenumber, Toast.LENGTH_LONG).show();
            Toast.makeText(getApplicationContext(), wwwdf2, Toast.LENGTH_LONG).show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}