黑马程序员技术交流社区

标题: 遍历带内容的文件夹的疑问 [打印本页]

作者: 廖理    时间: 2012-5-9 10:51
标题: 遍历带内容的文件夹的疑问

在遍历文件夹时 ,没有问题,为什么要换成遍历c盘,D盘,E盘,F盘的时候,为什么会报空指针异常(NullPointException)
问题出在哪里
在毕老师的视频中的遍历一个带目录的文件夹的程序是这样的
import java.io.*;
class FileDemo1{
       publicstatic void main(String[] args)throws IOException{
              method_8(newFile("F:"));
       }
       //读取一个带内容的文件夹
       publicstatic void method_8(File d){
              
              sop(d);
      
              File[]files = d.listFiles()
                     for(inti = 0; i < files.length ;i++){
                            if(files.isDirectory()){
                                   method_8(files);
                            }else{
                              sop(files);
                            }
                     
                }
              }
在遍历文件夹时 ,没有问题,为什么要换成遍历c盘,D盘,E盘,F盘的时候,为什么会报空指针异常(NullPointException)
问题出在哪里



作者: 赵玮_Tom    时间: 2012-5-9 10:53
在盘符后面加上两个反斜杠试试
作者: —__    时间: 2012-5-9 11:00
请讲你换成其他盘符 并报错的代码弄上来看看
作者: 彩虹    时间: 2012-5-9 11:36
    我将一段类似的程序调试了一下,报空指针异常问题出现在method_8(newFile("F:"));这一句
你看看是否是("F:")这部分写错,必须全部为英文写的,包括符号在内。
   
作者: 徐然    时间: 2012-5-9 13:02
method_8(newFile("F:"));
F:  表示一个普通的字符串,好像不能代表盘符把,"F:\\"这个是盘符
作者: 廖理    时间: 2012-5-9 13:26
本帖最后由 廖理 于 2012-5-9 13:29 编辑

操 弄了 半天,我终于知道错在哪里了哈哈 终于明白了
这回没问题了 哈哈
import java.io.*;

class FileDemo1{
        public static void main(String[] args)throws IOException{
                method_8(new File("F:\\");
        }
        //读取一个带内容的文件夹
        public static void method_8(File d){
               
                sop(d);
        
                File[] files = d.listFiles();
                if(files != null){//此处一定要判断是否为空,否则,会抛出NullPointException
                        
                        for(int i = 0; i < files.length ;i++){
                                if(files.isDirectory()){
                                        method_8(files);
                                }else{
                                  sop(files);
                                }
                        
                  }
                }


如果文件夹为空时,File[] files = d.listFiles();此时files为空,所以在循环前必须判断此数组是否为空,
不判断的话,就可能会会抛出NullPointException




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2