java中的异常错误

时间:2014-03-07 23:45:06

标签: java nullpointerexception

我有一个错误说“线程中的异常”主“java.lang.NullPointerException”。请考虑下面的代码。

public static void main(String args[]){
    String dir_name = "C:\\temp\\"; //Or another directory
    File dir = new File(dir_name);

    File[] dir_list = dir.listFiles();
    for(int i=0;i<dir_list.length;++i) {
        System.out.println(dir_list[i].getName())
    }
}

我有什么遗失的吗?我需要一些指导。

3 个答案:

答案 0 :(得分:3)

public static void main(String args[]){
  String dir_name = "C:\\temp\\"; //Or another directory
  File dir = new File(dir_name);

  if(dir.exists() && dir.isDirectory()){
    File[] dir_list = dir.listFiles();
    for(int i=0;i<dir_list.length;++i) {
      System.out.println(dir_list[i].getName());
    }
  }

}

答案 1 :(得分:2)

我猜你的问题是dir.listFiles()返回null因为dir不被Java视为有效目录。如the documentation中所述:

  

如果此抽象路径名不表示目录,或者发生I / O错误,则返回null。

因此,您的Java应用程序可能无权访问C:\Temp\,或者字符串C:\\Temp\\被误解为文件对象的参数,或者只是它不存在。我不知道,但是你应该检查是否dir == null并在发生这种情况时抛出异常。并找出无法访问C:\temp\的原因。

作为一个检查,我只能关注@ZhenxiaHoa代码示例,并添加抛出异常以使该错误脱颖而出:

if(dir.exists() && dir.isDirectory()){
    File[] dir_list = dir.listFiles();
    for(int i=0;i<dir_list.length;++i) {
        System.out.println(dir_list[i].getName());
    }
} else {
    throw IOException("Can't access directory");
}

答案 2 :(得分:1)

this question

null表示存在错误。