Thread中的空例外

时间:2013-12-20 20:38:49

标签: java android multithreading

在文件管理器中搜索算法之前。 怎么了?

    import java.io.File;

public class SearchThread extends Thread {
    MainActivity ob = new MainActivity();
    Search ob2 = new Search();
    String searchString = new String();
    String stringDirectory = new String();
    public SearchThread(String string, String directory) {
        searchString = string;
        stringDirectory = directory;
        start();
    }

    public void run() {
        File directory = new File(stringDirectory);
        search(directory.listFiles());
    }
    public void search(File[] directory) {
        for(File a : directory) {
            if(a.isDirectory()) {
                search(a.listFiles());
            } else if(ob2.cutFormat(a.getName()) == searchString) {
                ob.giveMeString(a.getAbsolutePath());
            }
        }
    }
}

日志中的消息:

12-21 00:28:40.550  13147-13298/com.example.myproject E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-256
    java.lang.NullPointerException
            at com.example.myproject.SearchThread.run(SearchThread.java:21)
12-21 00:28:40.558      471-482/? E/SurfaceFlinger﹕ #### captureScreenImplLocked

第21行:“public void search(File[] directory) {” 我从另一个类路径传递,从哪里开始作为字符串,以及带有我正在寻找的项目名称的字符串。

1 个答案:

答案 0 :(得分:0)

如果stringDirectory实际上没有指向目录,则File类中的listFiles()方法可以返回null。任何其他时间它将返回一个空数组;所以如果这返回null;您的目录路径错误。

因此,null异常很可能发生在你的for-each循环的开始处:

for (File a : directory)

因为你直接用listFiles()方法调用你的搜索(..)方法。