好的,所以我有这个功能,我用来搜索文件中的特定文本,当它在文件中找到文本时,它应该返回包含该文本的所有文件中的所有行 所以,我有一个功能,这样做...但我有另一个功能有点不同,它不返回任何东西,我非常确定该文件包含搜索文本... 所以,这是有效的功能:
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 :(得分:0)
您永远不会向StringBuffer
对象添加任何内容,因此我希望它返回""