读取文本行超过130000的大文本文件

问题描述 投票:0回答:1

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

我的代码:(适用于小文件,但不适用于大文件)]]

   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();
        }
    }

}

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

android inputstream bufferedreader readline large-files
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.