-1

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

    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

4

1 回答 1

0

你永远不会向StringBuffer对象添加任何东西,所以我希望它会返回""

于 2012-06-04T15:55:26.553 回答