向播放器发送消息时出现问题

时间:2012-05-03 07:56:05

标签: java file search

我的bukkit插件有问题。 我尝试做的是搜索文件,逐行读取(有效),然后如果行中有一些文本,它必须返回该行,但它也必须返回所有其他行文件中也包含该特定文本。当我有这些行时,我必须将这些行发送给播放器,这不是问题,但是当我发送我现在获得的行时,“\ n”不起作用,这里是代码我现在用:

  public String searchText(String text, String file, Player p)
    {
        String data = null;

        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String line = null;

            while((line = br.readLine()) != null)
            {
                if(line.indexOf(text) >= 0)
                {
                    data += System.getProperty("line.separator") + line + System.getProperty("line.separator");
                }
                p.sendMessage("+++++++++++GriefLog+++++++++++");
                p.sendMessage(data);
                p.sendMessage("++++++++++GriefLogEnd+++++++++");
            }

            br.close();

        } catch (Exception e) {
            e.printStackTrace();            
        }

        return "";
    }

返回意味着为空,因为信息会更高地返回给玩家:P 现在的问题是,我如何在数据变量中添加“\ n”,因为当我在我的其余代码中使用此函数时,它会提供很多行,但是没有“\ n”,那么怎么做我把它放进去了?

1 个答案:

答案 0 :(得分:1)

由于您的方法不应返回任何内容,请删除return语句并将返回类型设置为void。 您的代码看起来会为搜索字词出现的每一行输出一次数据字符串,请尝试:

data = "";
while((line = br.readLine()) != null)
{
    if(line.indexOf(text) >= 0)
    {
        //remove the first System.getProperty("line.separator") if
        //you don't want a leading empty line
        data += System.getProperty("line.separator") + line + 
            System.getProperty("line.separator");
    }
}
if (data.length() > 0) {
    p.sendMessage("+++++++++++GriefLog+++++++++++");
    p.sendMessage(data);
    p.sendMessage("++++++++++GriefLogEnd+++++++++");
}