【问题标题】:Java: Search a word in multiple filesJava:在多个文件中搜索一个单词
【发布时间】:2012-01-13 18:45:18
【问题描述】:

基本上,我需要检查一个单词在多个文件中的出现次数。
此外,一个单词可能会多次出现在一个文本文件中。
我想为每个文件保存一个单词的位置;所以我写了下面的代码:

    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();
        }
    }


第一次成功发生后,我的代码无法添加到列表中。所以我在每个数组中只有一个元素。
我如何解决它?
P.S 我的文本文件只有一行

【问题讨论】:

  • 您是否意识到即使您的代码实际上也将单词位置存储在行内而不是整个文件中?还有“line.lastIndexOf(word);”这一行没有效果。
  • 我的错,我忘了说我的文本文件由一行组成,我已经将 CVS 转换为 txt。
  • @user1115605 :你不应该添加 line.lastIndexOf(word);也到列表中,保存列表中最后出现的单词?问候
  • 是的,line.lastIndexOf(word) 没有效果,我正在尝试继续在字符串中移动直到文件末尾。我不知道该怎么做,所以我只是即兴发挥
  • 您需要另一个循环 - 请参阅下面的答案

标签: java search arraylist indexof


【解决方案1】:

这里是修复(用这个替换你的while循环):

while ((line = input.readLine ()) != null)
{
    int index = -1;
    while ((index = line.indexOf (word, index + 1) > -1)
    {
        list.add (index);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 2017-03-30
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2014-03-23
    相关资源
    最近更新 更多