2012-06-04 22 views
-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

回答

0

你永遠不添加任何東西到StringBuffer對象,所以我希望它返回""

+0

我做的事情增加,但低於答案是正確的......所以謝謝,誰回答了它......:P對不起,用這個打擾你們 – blackwolf123333