Java:在多个文件中搜索一个单词
基本上,我需要检查一个单词在多个文件中的出现情况。Java:在多个文件中搜索一个单词,java,search,arraylist,indexof,Java,Search,Arraylist,Indexof,基本上,我需要检查一个单词在多个文件中的出现情况。 此外,一个单词可能多次存在于单个文本文件中。 我想为每个文件保存一个单词的位置;所以我写了下面的代码: public static void findWord(String word, File file){ try{ BufferedReader input = new BufferedReader( new InputStreamReader(
此外,一个单词可能多次存在于单个文本文件中。
我想为每个文件保存一个单词的位置;所以我写了下面的代码:
public static void findWord(String word, File file){
try{
BufferedReader input = new BufferedReader(
new InputStreamReader(
new FileInputStream(file)));
String line;
ArrayList<Integer> list=new ArrayList<Integer>();
while((line=input.readLine())!=null){
if(line.indexOf(word)>-1){
list.add(line.indexOf(word));
}
}
System.out.println(file +": "+ list);
input.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
publicstaticvoidfindword(字符串字,文件){
试一试{
BufferedReader输入=新BufferedReader(
新的InputStreamReader(
新文件输入流(文件));
弦线;
ArrayList=新建ArrayList();
而((line=input.readLine())!=null){
if(行索引of(word)>-1){
list.add(line.indexOf(word));
}
}
System.out.println(文件+“:”+列表);
input.close();
}
捕获(例外情况除外){
例如printStackTrace();
}
}
我的代码在第一次成功发生后无法添加到列表中。因此,每个数组中只有一个元素。
我怎么修理它?
P.S我的文本文件由一行组成
修复方法如下(用以下内容替换while循环):
而((line=input.readLine())!=null)
{
int指数=-1;
而((index=line.indexOf(word,index+1)>-1)
{
list.add(索引);
}
}
修复方法如下(用以下内容替换while循环):
而((line=input.readLine())!=null)
{
int指数=-1;
而((index=line.indexOf(word,index+1)>-1)
{
list.add(索引);
}
}
您是否意识到,即使您的代码实际上也在行中存储单词位置,而不是整个文件?而且行“line.lastIndexOf(word);”也没有效果。糟糕的是,我忘了提到我的文本文件由一行组成,我已将CVS转换为txt。@user1115605:您不想添加line.lastIndexOf(word)吗;也保存到列表中,以保存列表中最后出现的单词?Regardsys,line.lastIndexOf(单词)没有效果,我试着在字符串中继续移动直到文件结束。我不知道怎么做,所以我只是改进了一下。你需要另一个循环来实现这一点-见下面的答案。你知道吗,即使你的代码实际上也在行中存储单词位置,而不是整个文件?还有行“line.lastIndexOf(word);”没有效果。我的错,我忘了提到我的文本文件由一行组成,我已将CVS转换为txt。@user1115605:您不打算将line.lastIndexOf(word);也添加到列表中,以保存列表中最后出现的word吗?Regardsys,line.lastIndexOf(word)没有效果,我尝试了一些类似于在字符串中继续移动直到文件结束的操作。我不知道如何做,所以我只是在改进。您需要另一个循环来实现这一点-请参见下面的答案
while ((line = input.readLine ()) != null)
{
int index = -1;
while ((index = line.indexOf (word, index + 1) > -1)
{
list.add (index);
}
}