import java.io.*;
public class DirFile{
static String fileResult[];
public static void printDirect(File root){
File myFile = new File(root, "123.txt ");
if (myFile.exists()){
System.out.println(root);
if(fileResult==null){
//就是下面这一句出错!
fileResult[0] = root.getPath();
}
else
fileResult[fileResult.length] = root.getPath();
}
File subroots[]=root.listFiles(new FileFilter(){
public boolean accept(File pathname) {
return pathname.isDirectory();
}
});
if(subroots!=null){
for(int i=0;i <subroots.length;i++){
printDirect(subroots[i]);
}
}
}
public static void main(String[] args) throws Exception {
printDirect(new File( "d:\\ "));
if(fileResult!=null){
for(int i=0;i <fileResult.length;i++){
System.out.println(fileResult[i]);
}
}
}
}
javac时不出错,java时出错信息如下:
Exception in thread "main " java.lang.NullPointerException
at DirFile.printDirect(DirFile.java:9)
at DirFile.printDirect(DirFile.java:21)
at DirFile.printDirect(DirFile.java:21)
at DirFile.main(DirFile.java:26)
我就是想在printDirect方法时把查找到包含123.txt文件的目录放到fileResult数组里,再在main方法时显示出来.但是为什么会错呢?
------解决方法--------------------------------------------------------
if (fileResult == null) {
//就是下面这一句出错!
fileResult[0] = root.getPath();
} else
fileResult[fileResult.length] = root.getPath();
这里我没搞明白你为什么要用数组
实际是你整个程序只在这一个地方对数组元素进行了赋值,而且这里还很有问题。
且不说没有生成数组实例,就算生成了 fileResult[fileResult.length] 也一定会抛出IndexOutOfBoundException的,因为fileResult的索引号是从0到fileResult.length - 1
------解决方法--------------------------------------------------------
仔细的看了你的程序,你的程序是递归查找一个指定的文件,一下是我修改的:
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;
public class DirFile {
static List fileResult = new ArrayList();
public static void printDirect(File root) {
File myFile = new File(root, "123.txt ");
if (myFile.exists()) {
fileResult.add(root.getPath());
}
File subroots[] = root.listFiles(new FileFilter() {