Я бы пошел с читателем буферизованного файла, как это:
public static void main(String[] args) throws IOException {
try {
File f = new File("data.txt");
BufferedReader b = new BufferedReader(new FileReader(f));
String readLine;
while ((readLine = b.readLine()) != null) {
if (readLine.contains("WORD"))
System.out.println("Found WORD in: " + readLine);
}
} catch (IOException e) {
e.printStackTrace();
}
}
где "СЛОВО" - слово, которое вы ищете.
Преимущество BufferedReader
состоит в том, что он читает вперед, чтобы уменьшить количество циклических операций ввода-вывода - или, как они выражаются в JavaDoc : «Считывает текст из потока ввода символов, буферизация символов для эффективного чтения символов, массивов и строк. "
FileChannel
- это немного более новое изобретение, появившееся в NIO с Java 1.4. Он может работать лучше, чем BufferedReader, но я также считаю его более низкоуровневым в своем API, поэтому, если у вас нет особых требований к производительности, я бы оставил readahead / buffering на BufferedReader
и FileReader
.
Вы также можете сказать, что BufferedReader
"ориентирован на строки", тогда как FileChannel
"ориентирован на байты".