JUnit 3.8 演示递归删除文件目录的 测试类程序 .


 用递归方式来实现删除硬盘的文件或目录(空文件夹)

首先要找到递归的入口及出口,这点很重要,成败在此,呵呵!

代码实现:

[java] view plain copy
  1. import java.io.File ;  
  2.   
  3. class RecursionDeleteFileDemo //利用递归 删除 文件或目录 操作  
  4. {  
  5.     public static void deleteFiles(File file)  
  6.     {  
  7.         //递归出口  
  8.         //判断目前文件,如果是文件 或 是一个空的文件夹,则删除  
  9.         if(file.isFile() || file.list().length ==  0)  
  10.         {  
  11.            file.delete() ;  
  12.         }  
  13.         else  
  14.         {  
  15.             File[] files = file.listFiles() ;  
  16.             for(File f : files)  
  17.             {  
  18.                 //递归入口  
  19.                 deleteFiles(f) ;  
  20.                 f.delete() ;  
  21.             }  
  22.   
  23.         }  
  24.     }  
  25. }  
  26.   
  27. public class RecursionDeleteFile  
  28. {  
  29.     public static void main(String[] args)  
  30.     {  
  31.         File file = new File("E:/abc") ;  
  32.   
  33.         RecursionDeleteFileDemo.deleteFiles (file) ;  
  34.   
  35.   
  36.     }  
  37. }  

File[] files = file.listFiles() ;    

返回: 抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录

测试类程序:RecursionDeleteFileDemoTest.java

[java] view plain copy
  1. package com.junit3_8;  
  2.   
  3. import java.io.File;  
  4. import java.io.IOException;  
  5.   
  6. import junit.framework.Assert;  
  7. import junit.framework.TestCase;  
  8.   
  9. public class RecursionDeleteFileDemoTest extends TestCase{  
  10.       
  11.     //测试只有一个文件的目录  
  12.     public void testDeleteFiles()  
  13.     {  
  14.           
  15.         File file = null ;  
  16.         try {  
  17.               
  18.             file = new File("a.txt");  
  19.             file.createNewFile();  
  20.             RecursionDeleteFileDemo.deleteFiles(file);  
  21.               
  22.               
  23.         } catch (IOException e) {  
  24.               
  25.         Assert.fail();  
  26.               
  27.         }  
  28.           
  29.         boolean result ;  
  30.         //exists()判断该文件或目录是否存在  
  31.         result = file.exists();//false  
  32.         Assert.assertFalse(result);  
  33.     }  
  34.       
  35.       
  36.     /** 
  37.      * 测试生成多层目录,目录结构如下 
  38.      *  
  39.      *      root 
  40.      *       / 
  41.      *      /   
  42.      * child1   child2 
  43.      *       
  44.      */  
  45.     public void testDeleteFiles2()  
  46.     {  
  47.         File directory = null ;  
  48.           
  49.         try {  
  50.               
  51.             directory = new File("root");//构造一个子目录  
  52.             directory.mkdir();//建立一个新的根目录  
  53.               
  54.             File file0 = new File(directory,"xx.txt");  
  55.             file0.createNewFile();  
  56.               
  57.             //在root目录下生成两个子目录  
  58.             File file1 = new File(directory,"child1");  
  59.             File file2 = new File(directory,"child2");  
  60.             file1.mkdir();  
  61.             file2.mkdir();  
  62.               
  63.             //分别在file3和file4目录下建一个文本文件  
  64.             File file3 = new File(file1,"a.txt");  
  65.             File file4 = new File(file2,"b.txt");  
  66.             file3.createNewFile();  
  67.             file4.createNewFile();  
  68.               
  69.             RecursionDeleteFileDemo.deleteFiles(directory);  
  70.               
  71.               
  72.               
  73.               
  74.         }  
  75.         catch(Exception e)  
  76.         {  
  77.             Assert.fail();  
  78.         }  
  79.           
  80.         Assert.assertNotNull(directory);  
  81.         String[] str = directory.list();  
  82.         Assert.assertEquals(0, str.length);  
  83.         directory.delete();//删除根目录  
  84.           
  85.     }  
  86.       
  87.   
  88. }  
原文地址:https://www.cnblogs.com/hoobey/p/5293994.html