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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiatian 中级黑马   /  2013-5-31 01:08  /  1858 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


public class DeleteFileDemo {
        public static void main(String[] args) {
                File file = new File("test");

                deleteFiles(file);
        }

        private static void deleteFiles(File file) {
                File[] fileArray = file.listFiles();
                if (fileArray != null) {
                        for (File f : fileArray) {
                                if (f.isDirectory()) {
                                        deleteFiles(f);
                                } else {
                                        System.out.println(f.getName() + ":" + f.delete());
                                }
                        }
                }

                System.out.println(file.getName() + ":" + file.delete());
        }
}
有两个文件夹,两个文件夹中分别有一个文本文件。
我的理解是,先把文件都删了,然后再删文件夹。可是系统运行的顺序是,进入第一个文件夹,先删了文件,然后直接把文件夹删了,然后到另一个文件夹里做相同操作。
删除文件夹的代码是写在for循环外面的,为什么会中途跳出来呢?

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1

查看全部评分

3 个回复

倒序浏览

兄弟,这个代码不是用来删除两个文件夹的,是用来完全删除一个文件夹的,即 "test” 文件夹。。。
回复 使用道具 举报
因为你把文件夹里的东西删除后文件夹就为空了也就是 满足不了if (fileArray != null) 这个条件了  所以它就会执行if语句以外的代码也就是  System.out.println(file.getName() + ":" + file.delete()); 所以文件夹就会被删除。。。。   不知道这样说你能明白吗?

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
如果问题已经解决,再次编辑,修改主题类型为已解决,方便大家查看
否则继续追问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马