Android - 递归文件搜索提供NullPointerException

时间:2012-07-18 15:43:08

标签: android

我有以下函数以递归方式搜索文件中的字符串,但它不断给出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");

2 个答案:

答案 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]);
            }
        }
}