【问题标题】:Searching through multiple files does not work搜索多个文件不起作用
【发布时间】:2012-06-04 15:48:00
【问题描述】:

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

    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

【问题讨论】:

    标签: java file search


    【解决方案1】:

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

    【讨论】:

    • 我确实添加了一些东西,但下面的答案是正确的......所以谢谢,回答它的人......:P 很抱歉打扰你们
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    相关资源
    最近更新 更多