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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 海世山盟 中级黑马   /  2014-5-30 17:39  /  1179 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  public static void remove(File dir)
        {
                  
          File[] files=dir.listFiles();
          for(int x=0;x<files.length;x++)
                {
          if(files[x].isDirectory())
                remove(files[x]);
          else
                  files[x].delete();
          }
          
         dir.delete();
          
          }
这是老师的代码,我想问的是:delete删除目录只有在目录为空的时候才起作用。然而程序中只是遍历到文件才删除,也就说我们只删除了目录下面所有的文件,这样一来目录下面应该还有很多空文件夹才对啊。如果针有空文件夹的话,那么目录dir就不会为空,那删除dir应该是没有效果的啊?

4 个回复

倒序浏览
说的很对啊
回复 使用道具 举报
for()循环遍历了文件夹里所有的内容,die,delete()实在对文件里所有文件及文件夹删除后才进行的,所以此时dir是个空文件夹可以删除。
回复 使用道具 举报
不会,你这个程序我也刚才试了一下,是可以删的,这是用递归,要知道的是,当程序执行到dir.delete时不是结束这个方法,而是向后返,返到在循环里调用本方法的地方,也就是remove(ifles[x])这地方。直到文件包括子文件夹都删除了。
回复 使用道具 举报
一直往下查询,往下往下,知道查询的文件是以个标准文件,也就是类似于什么.txt.doc之类的文件,这个时候你在for循环里面就把这些文件给删除了,接着就是要返回当前层的上一层了,但是在返回是,有个dir.delete,这个就是你传入的一个文件夹(文件),这是这里面的东西都没有了,可以删除了,,,,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马