如何在java中搜索文本文件中的某个单词

时间:2010-10-06 08:05:29

标签: java text-files bufferedreader

如何在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 个答案:

答案 0 :(得分:2)

您的代码希望文件中的每一行都有三个以空格分隔的单词。所以你的文件必须如下所示:

1 a 0
2 b 0

如果文件中有一行没有三个以空格分隔的单词,则会出现ArrayIndexOutOfBoundsException。例如,您的文件中可能有一个空行。

你可以在你的代码中检查这个:

if ( st.length != 3) {
    System.err.println("The line \"" + s + "\" does not have three space-separated words.");
}

答案 1 :(得分:0)

您可以使用here所述的模式/匹配器组合,或尝试Scanner。像这样使用Buffered读卡器:

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

并使用in.toString()

提取字符串

答案 2 :(得分:0)

如果文字很大,你不想立即阅读并保留在内存中。您可以使用readLine()不断读取一行,并在每个输出行中搜索一个模式。

答案 3 :(得分:0)

以下是如何使用BufferedReader执行此操作的示例 link text