首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Exception >

javac时不出错,java时出错:java.lang.NullPointerException

2014-01-26 
import java.io.* public class DirFile{static String fileResult[]public static void printDirect(Fil

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() {         

热点排行