Как искать определенное слово в текстовом файле в Java
-
28-09-2019 - |
Вопрос
Как искать определенное слово в текстовом файле в Java? Использование буферизованного читателя у меня есть этот код, но я получаю
java.lang.ArrayIndexOutOfBoundsException
Пожалуйста, помогите мне определить, что не так с моей программой.
System.out.println("Input name: ");
String tmp_name=input.nextLine();
try{
FileReader fr;
fr = new FileReader (new File("F:\\names.txt"));
BufferedReader br = new BufferedReader (fr);
String s;
while ((s = br.readLine()) != null) {
String[] st = s.split(" ");
String idfromtextfile=st[0];
String nemfromtextfile = st[1];
String scorefromtextfile=st[2];
if(nemfromtextfile.equals(tmp_name)){
System.out.println("found");
}else{
System.out.println("not found");
}
}
}catch(Exception e){ System.out.println(e);}
names.txt выглядит так:
1
a
0
2
b
0
Решение
Ваш код ожидает каждую строку в файле, чтобы иметь три слов с пространством. Таким образом, ваш файл должен выглядеть так:
1 a 0
2 b 0
То ArrayIndexOutOfBoundsException
Происходит, если в файле есть строка, у которых нет трех слов пространства. Например, в вашем файле может быть пустая строка.
Вы можете проверить это в вашем коде, как это:
if ( st.length != 3) {
System.err.println("The line \"" + s + "\" does not have three space-separated words.");
}
Другие советы
Если текст огромный, и вы не хотите читать его одновременно и сохранить в памяти. Вы можете постоянно читать строку с помощью readline () и искать каждую из линейки вывода для шаблона.
Вот пример того, как сделать это с помощью буферреджераСсылка текста