黑马程序员技术交流社区

标题: 关于文件目录删除的困惑 [打印本页]

作者: 海世山盟    时间: 2014-5-30 17:39
标题: 关于文件目录删除的困惑
  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应该是没有效果的啊?
作者: 丁绍然    时间: 2014-5-30 18:45
说的很对啊
作者: 小坏坏    时间: 2014-5-30 19:23
for()循环遍历了文件夹里所有的内容,die,delete()实在对文件里所有文件及文件夹删除后才进行的,所以此时dir是个空文件夹可以删除。
作者: GoodBoy123    时间: 2014-5-30 22:24
不会,你这个程序我也刚才试了一下,是可以删的,这是用递归,要知道的是,当程序执行到dir.delete时不是结束这个方法,而是向后返,返到在循环里调用本方法的地方,也就是remove(ifles[x])这地方。直到文件包括子文件夹都删除了。
作者: 龙健    时间: 2014-6-1 01:11
一直往下查询,往下往下,知道查询的文件是以个标准文件,也就是类似于什么.txt.doc之类的文件,这个时候你在for循环里面就把这些文件给删除了,接着就是要返回当前层的上一层了,但是在返回是,有个dir.delete,这个就是你传入的一个文件夹(文件),这是这里面的东西都没有了,可以删除了,,,,




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