java递归删除目录及子文件

学到java的递归,难免会又学这个删除文件的程序。

 1 package com.mcz.io;
 2 
 3 import java.io.File;
 4 
 5 public class RecursionTest {
 6     public static boolean  deleteAll(File file){
 7         if(file.isFile()|| file.list().length == 0){
 8             file.delete();
 9         }else {
10             File[] files = file.listFiles();
11             for (File f : files) {
12                 deleteAll(f);
13                 f.delete();    
14             }
15         }
16         return true;
17     }
18     public static void main(String[] args) {
19         boolean a = deleteAll( new File("d:\\abc"));
20                                      file.delete();
21         System.out.println(a);
22     }
23 }

我们要搞清楚,delete方法要求我们删除的目录里面要为空才可以被删除,了解之后我们就要想

分析一下:

一个递归算法的出口是最重要的,那么我们删除文件,就是首先传入的是一个File类型的对象,

判断它是否一个文件或它是否一个空目录

if(file.isFile()|| file.list().length == 0)

因为我们用的是“||”所以与短路情况,,如果第一个为真,那么第二个就不执行了。那么我们直接删掉就可以;

如果不是的话,我们就要执行后面递归,

file里面有东西,所以我们要获取file里面的东西,再遍历它,

删除里面的所有东西。

File[] files = file.listFiles();
   for (File f : files) {
    deleteAll(f);
    f.delete(); 

递归算法最重要的是deleteAll方法里面的东西,只要自己想清楚了,就会觉得容易了。

 

 

 

 

 

 

 

posted @ 2013-07-24 09:56  mc~zha  阅读(378)  评论(0编辑  收藏  举报