搜索多个文件不起作用

时间:2012-06-04 15:48:01

标签: java file search

好的,所以我有这个功能,我用来搜索文件中的特定文本,当它在文件中找到文本时,它应该返回包含该文本的所有文件中的所有行 所以,我有一个功能,这样做...但我有另一个功能有点不同,它不返回任何东西,我非常确定该文件包含搜索文本... 所以,这是有效的功能:

    public void searchText(String text, CommandSender p) {

    File[] searchFiles = new File[files.size()];
    searchFiles = files.toArray(searchFiles);

    FileReader fileReader = null;
    BufferedReader br = null;

    for(File searchFile : searchFiles)
    {
        try {
            fileReader = new FileReader(searchFile);
            br = new BufferedReader(fileReader);
            String line = "";

            while ((line = br.readLine()) != null) {
                if (line.indexOf(text) >= 0) {
                    p.sendMessage(line);
                }
            }

        } catch (Exception e) {
            if((fileReader != null) && (br != null))
            {
                try {
                    br.close();
                    fileReader.close();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }

            e.printStackTrace();
        } finally {
            if((fileReader != null) && (br != null))
            {
                try {
                    br.close();
                    fileReader.close();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        }
    }
}

该功能很好地将这些行提供给控制台。 但是当我使用这个功能时:

    public String searchPos(int x, int y, int z) {
    String xyz = z + ", " + y + ", " + z;
    StringBuffer sb = new StringBuffer();
    File[] searchFiles = new File[files.size()];
    searchFiles = files.toArray(searchFiles);

    FileReader fileReader = null;
    BufferedReader br = null;

    for(File searchFile : searchFiles)
    {
        try {
            fileReader = new FileReader(searchFile);
            br = new BufferedReader(fileReader);
            String line = "";

            while ((line = br.readLine()) != null) {
                if ((line.indexOf(xyz) >= 0) || (line.contains(xyz))) {
                    sb.append(line);
                }
            }

        } catch (Exception e) {
            if((fileReader != null) && (br != null))
            {
                try {
                    br.close();
                    fileReader.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }

            e.printStackTrace();
        } finally {
            if((fileReader != null) && (br != null))
            {
                try {
                    br.close();
                    fileReader.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
    }
    return  sb.toString();
}

返回只是“”或者什么也没有,我只是无法理解为什么第一个函数可以正常工作,而第二个函数没有。

提前致谢,blackwolf12333

1 个答案:

答案 0 :(得分:0)

您永远不会向StringBuffer对象添加任何内容,因此我希望它返回""