Для обработки журнала мое приложение должно читать текстовые файлы по строкам. Сначала я использовал функцию readLine() BufferedReader, но я читал в Интернете, что BufferedReader работает медленно при чтении файлов.
Затем я попытался использовать FileInputStream вместе с FileChannel и MappedByteBuffer, но в этом случае нет никакой функции, аналогичной ReadLine(), поэтому я искать свой текст для разрыва строки и обрабатывать его:Самый быстрый способ чтения текстового файла по строкам в Java
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 - единственное решение этой проблемы.
P.S .: ra
является экземпляром RunAutomaton из библиотеки dk.brics.Automaton.
BufferedReader действительно слишком медленный для ваших нужд? Это, вероятно, один из самых чистых, наиболее удобных в использовании решений, если вы должны закодировать на Java. –
Если 'BufferedReader' действительно слишком медленный для вашего приложения, вы должны подумать о том, что не используете java или другие управляемые языки ... _ (Но я сомневаюсь, что это так) _ – ordag
[Aaron] (http: // stackoverflow. com/users/460201/aaron) ответ будет удален как ответ только для ссылки, поэтому я поставлю его здесь как комментарий: «Проверьте [эту ссылку] (http://nadeausoftware.com/articles/ 2008/02/java_tip_how_read_files_quickly). Он содержит сравнение скорости различных методов ». –