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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王延龙 中级黑马   /  2013-8-3 10:14  /  1056 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杜光 于 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)



评分

参与人数 1技术分 +1 收起 理由
杜光 + 1

查看全部评分

3 个回复

倒序浏览
可以编译通过吗?应该是files[i]吧
回复 使用道具 举报
楼上正解,你这个程序根本就编译不通过,files是一个集合,你要删除的是集合中的文件,应该加上角标。。
回复 使用道具 举报
说实话,我和你干过一样的事,这个问题我也遇到过,问题通常出在你要删除的文件上,它可能是隐藏的或者你权限不够等问题,这样的文件用java删除都会出现空指针异常,所以我的解决办法就是在调用idelete()方法的时候给他try catch,在catch当中输出错误信息,以便知道问题出在哪里,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马