在文件管理器中搜索算法之前。 怎么了?
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) {
”
我从另一个类路径传递,从哪里开始作为字符串,以及带有我正在寻找的项目名称的字符串。
答案 0 :(得分:0)
如果stringDirectory
实际上没有指向目录,则File类中的listFiles()方法可以返回null。任何其他时间它将返回一个空数组;所以如果这返回null;您的目录路径错误。
因此,null异常很可能发生在你的for-each循环的开始处:
for (File a : directory)
因为你直接用listFiles()方法调用你的搜索(..)方法。