我有以下函数以递归方式搜索文件中的字符串,但它不断给出NullPointerException
。当它第一次调用它似乎工作,但一旦它递归调用自己,files
是 null 。
public void recursiveSearch(File searchDirectory, String searchString){
File[] files = searchDirectory.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()){
recursiveSearch(files[i], searchString);
}
if (files[i].getName().contains(searchString)){
searchResultFiles.add(files[i]);
}
}
}
以下是如何调用它的示例:
recursiveSearch("/", "abc");
答案 0 :(得分:2)
我看到的唯一问题是,如果File不是目录,File.listFiles()将返回null。我建议测试searchDirectory.isDirectory()而不是假设它。
答案 1 :(得分:0)
我今天早上尝试过,一些系统目录确实给isDirectory()一个null。另外一个空目录会返回一个null
,所以只需简单地设置一个空指针,它就能正常工作
public void recursiveSearch(File searchDirectory, String searchString){
if(searchDirectory!=null)
File[] files = searchDirectory.listFiles();
if(files!=null)
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()){
recursiveSearch(files[i], searchString);
}
if (files[i].getName().contains(searchString)){
searchResultFiles.add(files[i]);
}
}
}