A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 廖理 中级黑马   /  2012-5-9 10:51  /  1705 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


在遍历文件夹时 ,没有问题,为什么要换成遍历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)
问题出在哪里


5 个回复

倒序浏览
在盘符后面加上两个反斜杠试试
回复 使用道具 举报
请讲你换成其他盘符 并报错的代码弄上来看看
回复 使用道具 举报
    我将一段类似的程序调试了一下,报空指针异常问题出现在method_8(newFile("F:"));这一句
你看看是否是("F:")这部分写错,必须全部为英文写的,包括符号在内。
   
回复 使用道具 举报
method_8(newFile("F:"));
F:  表示一个普通的字符串,好像不能代表盘符把,"F:\\"这个是盘符
回复 使用道具 举报
本帖最后由 廖理 于 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
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马