0

我的 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”,那么我该如何输入呢?

4

1 回答 1

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+++++++++");
}
于 2012-05-03T08:53:03.743 回答