黑马程序员技术交流社区

标题: 删除文件为什么 会有空指针报错呢? [打印本页]

作者: 王延龙    时间: 2013-8-3 10:14
标题: 删除文件为什么 会有空指针报错呢?
本帖最后由 杜光 于 2013-8-4 10:21 编辑

import java.io.File;

public class RemoveDirTest {

        /**
         *  需要:删除一个带内容的文件
         *  思路:<br>
         *  1.深层遍历指定路径<br>
         *  2.判断遍历到的对象为文件还是文件夹<br>
         *  3.从内到外删除文件。<br>
         *  4.最后删除文件夹,一次就够了,只要没有内容
         *  
         */
        public static void main(String[] args) {

                File dir = new File("h:\\1");
               
                removeDir(dir);
        }

        private static void removeDir(File dir) {
               
                File[] files = dir.listFiles();
               
                for(int i = 0; i < files.length; i++){
                        
                        if(files.isDirectory()){
                                removeDir(files);
                        }
                        else{
                                System.out.println(files+":"+files.delete());
                        }
                }
                System.out.println(dir+":"+dir.delete());
        }

}
//我更改了,文件对象路径,然后编译就通过了,结果也正常,但是把路径改回去后,依然有异常,为什么啊?
Exception in thread "main" java.lang.NullPointerException
        at com.IO.RemoveDirTest.removeDir(RemoveDirTest.java:27)
        at com.IO.RemoveDirTest.removeDir(RemoveDirTest.java:30)
        at com.IO.RemoveDirTest.main(RemoveDirTest.java:20)




作者: 草貌路飞    时间: 2013-8-3 11:02
可以编译通过吗?应该是files[i]吧
作者: masterV    时间: 2013-8-3 13:02
楼上正解,你这个程序根本就编译不通过,files是一个集合,你要删除的是集合中的文件,应该加上角标。。
作者: 杨玲    时间: 2013-8-3 15:07
说实话,我和你干过一样的事,这个问题我也遇到过,问题通常出在你要删除的文件上,它可能是隐藏的或者你权限不够等问题,这样的文件用java删除都会出现空指针异常,所以我的解决办法就是在调用idelete()方法的时候给他try catch,在catch当中输出错误信息,以便知道问题出在哪里,




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