1. package com.tw.file.util;  
  2.  
  3. import java.io.File;  
  4.  
  5. /**  
  6.  * <p>递归删除目录和文件的程序 </p>  
  7.  * @author tw 2009-07-16  
  8.  *  
  9.  */ 
  10. public class DelFileUtils {  
  11.  
  12.     public static void main(String[] args) {      
  13.         //则试OK  
  14.         String rootDir = "E:\\delDir";  
  15.         String delDirName = ".txt";  
  16.         DelFileUtils del = new DelFileUtils();  
  17.         System.out.println("-------------del ---status----");  
  18.         del.FindDirectory(rootDir,delDirName);  
  19.         System.out.println("-------------del ---end----");  
  20.     }  
  21.      
  22.       
  23.     /**  
  24.      * 删除目录下指定类型文件或目录  
  25.      * @param root      是根目录的绝对路径  
  26.      * @author tw 2009-07-16  
  27.      * @param delName    要删的类型  
  28.      */ 
  29.     public static void FindDirectory(String root,String delName){  
  30.         //root是根目录的绝对路径  
  31.         File directory = new File(root);  
  32.         File[] files = directory.listFiles();  
  33.         //根目录为空  
  34.         if(files.length ==0){  
  35.             System.out.println(root+"根目录为空!");  
  36.             return;  
  37.         }  
  38.         else{  
  39.             for(int i=0;i<files.length;i++){  
  40.                 if(files[i].isDirectory()){  
  41.                     System.out.println("--------name:"+files[i].getName());  
  42.                     //根目录的子文件夹就是要删除的文件夹  
  43.                     if(files[i].getName().equals(delName)){  
  44.                         System.out.println(files[i].getAbsolutePath());  
  45.                         DelDirectory(files[i]);  
  46.                     }  
  47.                     //根目录的子文件夹不是要删除的文件夹  
  48.                     else{  
  49.                         FindDirectory(files[i].getAbsolutePath(),delName);  
  50.                     }  
  51.                 }                  
  52.             }  
  53.         }  
  54.     }  
  55.       
  56.     /**  
  57.      * 删除目录以及目录下的所有文件  
  58.      * @author tw 2009-07-16  
  59.      * @param directory 文件名  
  60.      */ 
  61.     public static void DelDirectory(File directory){  
  62.         File[] children = directory.listFiles();  
  63.         System.out.println("---------------method del---------------------");  
  64.         if(children.length==0){  
  65.             directory.delete();  
  66.             System.out.println("\t删除目录"+directory.getName());  
  67.         }  
  68.         else{  
  69.             for(int i=0;i<children.length;i++){  
  70.                 if(children[i].isFile()){  
  71.                     children[i].delete();  
  72.                     System.out.println("\t删除文件"+children[i].getName());  
  73.                 }  
  74.                 else if(children[i].isDirectory()){  
  75.                     DelDirectory(children[i]);  
  76.                     System.out.println("\t"+children[i].getAbsolutePath());  
  77.                 }  
  78.             }  
  79.             directory.delete();  
  80.             System.out.println("\t删除目录"+directory.getName());  
  81.         }  
  82.     }  
  83. }