Чтение большого текстового файла с более чем 130000 строк текста - PullRequest
0 голосов
/ 25 октября 2019

Как я могу прочитать большой текстовый файл в мое приложение? Это мой код, но он не работает. Мой код должен прочитать файл с именем 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();
        }
    }

}

1 Ответ

0 голосов
/ 26 октября 2019

Поскольку вы обрабатываете большой файл, вы должны обрабатывать данные кусками. Здесь ваше чтение файла нормально, но затем вы продолжаете добавлять все строки в строковый буфер и, наконец, переходить к Toast.makeText (). Это создает большой след в памяти. Вместо этого вы можете прочитать 100-100 строк и вызвать Toast.makeText () для обработки кусками. Еще одна вещь, используйте строитель строк вместо строкового буфера, чтобы избежать нежелательных накладных расходов на синхронизацию. Вы инициализируете переменную wwwdf2 внутри метода, но смотрите, что это переменная экземпляра, которая, я думаю, не требуется. Объявите это внутри метода, чтобы сделать его область короче.

...