好的,所以我有这个函数,我用它来搜索文件中的特定文本,当它在文件中找到该文本时,它应该返回包含该文本的所有文件中的所有行所以,我有一个函数这样做...但是我有另一个功能有点不同,它不返回任何东西,我很确定该文件包含搜索到的文本...所以,这里是有效的功能:
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