Самый быстрый способ читать текстовый файл построчно в Java

Для обработки журнала моему приложению необходимо читать текстовые файлы построчно. Сначала я использовал функцию readLine () из BufferedReader, но прочитал в Интернете, что BufferedReader работает медленно при чтении файлов.
Впоследствии я попытался использовать FileInputStream вместе с FileChannel и MappedByteBuffer, но в этом случае нет функции, подобной readLine (), поэтому я ищу в своем тексте разрыв строки и обрабатываю его:

    try {
        FileInputStream f = new FileInputStream(file);
        FileChannel ch = f.getChannel( );
        MappedByteBuffer mb = ch.map(FileChannel.MapMode.READ_ONLY, 0L, ch.size());
        byte[] bytes = new byte[1024];
        int i = 0;
        while (mb.hasRemaining()) {
            byte get = mb.get();
            if(get == '\n') {
                if(ra.run(new String(bytes)))
                    cnt++;
                for(int j = 0; j<=i; j++)
                    bytes[j] = 0;
                i = 0;
            }
            else
                bytes[i++] = get;
        }
    } catch(Exception ex) {
        ex.printStackTrace();
    }

Я знаю, что это, вероятно, не лучший способ чтобы реализовать его, но когда я просто читаю текстовый файл в байтах, это в 3 раза быстрее, чем при использовании BufferedReader, но вызов new String (bytes) создает новую строку и делает программу еще медленнее, чем при использовании BufferedReader .
Поэтому я хотел спросить, как быстрее всего читать текстовый файл построчно? Некоторые говорят, что BufferedReader - единственное решение этой проблемы.

PS: ra - это экземпляр RunAutomaton из библиотеки dk.brics.Automaton.

8
задан Yoni 27 April 2011 в 06:39
поделиться