2012-05-03 114 views
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」,那麼我如何將它放入?

回答

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+++++++++"); 
}