как искать определенное слово в текстовом файле в Java - PullRequest
0 голосов
/ 06 октября 2010

как искать определенное слово в текстовом файле в 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

Ответы [ 4 ]

2 голосов
/ 06 октября 2010

Ваш код ожидает, что каждая строка в файле содержит три слова, разделенных пробелом.Таким образом, ваш файл должен выглядеть следующим образом:

1 a 0
2 b 0

ArrayIndexOutOfBoundsException возникает, если в файле есть строка, в которой нет трех слов, разделенных пробелами.Например, в вашем файле может быть пустая строка.

Вы можете проверить это в своем коде так:

if ( st.length != 3) {
    System.err.println("The line \"" + s + "\" does not have three space-separated words.");
}
0 голосов
/ 06 октября 2010

Если текст огромен, и вы не хотите читать его сразу и хранить в памяти. Вы можете постоянно читать строку с помощью readLine () и искать в каждой строке вывода шаблон.

0 голосов
/ 06 октября 2010

Вот пример того, как это сделать, используя BufferedReader текст ссылки

0 голосов
/ 06 октября 2010

Вы можете использовать комбинацию Pattern / Matcher, описанную здесь , или попробовать Scanner .Используйте читатель Buffered следующим образом:

BufferedReader in
   = new BufferedReader(new FileReader("foo.in"));

и извлеките строку с помощью in.toString()

...