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