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

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

代码实现:

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

File[] files = file.listFiles() ;    

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

测试类程序:RecursionDeleteFileDemoTest.java

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

JUnit 3.8 演示递归删除文件目录的 测试类程序 .的更多相关文章

  1. myBatis执行测试批量删除,出现测试类正常显示,但数据库数据没变

    一般在测试myBatis运行正常,但数据库数据不变时,有可能是SQL语句有问题,检查SQL语句没问题,但数据库依然没变,就说明myBatis方法执行后并未提交到数据库,可尝试在测试类添加   sess ...

  2. Java递归删除文件目录的方法

    public static void delDir(String path){ File dir=new File(path); if(dir.exists()){ File[] tmp=dir.li ...

  3. java基础 File 递归删除文件夹中所有文件文件夹 目录(包含子目录)下的.java文件复制到e:/abc文件夹中, 并统计java文件的个数

    File 递归删除文件夹中所有文件文件夹 package com.swift.kuozhan; import java.io.File; import java.util.Scanner; /*键盘录 ...

  4. python dict clear只能删除一层,不能够递归删除。

    void PyDict_Clear(PyObject *op) { dictobject *mp; dictentry *ep, *table; int table_is_malloced; Py_s ...

  5. 【File】递归删除文件夹中子级文件/夹,并删除文件夹

    今天有这样一个需求,需要删除某一个文件夹,但是文件夹中还有子级的文件 或者还可能会有文件夹在里面,所以就需要使用一个简单的递归才能将文件夹删除成功,包括文件夹中的子级文件/夹.!!! 其实很简单,就一 ...

  6. php 递归创建目录、递归删除非空目录、迭代创建目录

    递归创建目录 方法一 function mk_dir($path){ if(is_dir($path)){ //参数本身是一个目录 return true; } if(is_dir(dirname($ ...

  7. Linux递归删除文件命令

    Linux递归删除文件命令 find . -name "*.log.*" -exec ls {} \; find . -name "*.log.*" -exec ...

  8. linux系统下,递归删除.svn文件

    linux系统下,递归删除.svn文件 SVNLinux 进入要删除的目录,执行下面的命令就可以啦. find . -name "*.svn"  | xargs rm -rf

  9. SVN莫名出错,网上找遍无果,递归删除当前目录下所有.svn文件名

    哎,太深刻的教训. 原来以前其它目录里有.SVN目录 ,而此SVN目录COPY到真正的SVN工作目录之后,会将有用的.SVN目录覆盖. 那么一样,显然,CI,UPDATE,CO之间的命令全部异常... ...

随机推荐

  1. 「BZOJ 2534」 L - gap字符串

    「BZOJ 2534」 L - gap字符串 题目描述 有一种形如 \(uv u\) 形式的字符串,其中 \(u\) 是非空字符串,且 \(v\) 的长度正好为 \(L\), 那么称这个字符串为 \( ...

  2. POJ1716 贪心

    题目大意:在[0,10000]上给出n个区间,要求在区间选整数点,每个区间至少包含两个点,问至少要几个点.题目保证有解决方案. 题目分析: 我们做过在区间上至少包含一个点的题目.类似的方法,我们先排序 ...

  3. Mybatis 删除多条数据XML SQL语句删除

    Mybatis 删除多条数据XML SQL语句删除 1.删除多条数据SQL写法 <delete id="deleteParamsByIds"> delete from ...

  4. SQL Server 事务复制爬坑记

    SQL Server 复制功能折腾了好几天了,现特将其配置过程以及其间遇到的问题记录下来,以备日后查阅.同时,也让“同道”同学们少走不必要的弯路.如果有不对之处,欢迎大家指正,欢迎沟通交流. 一.复制 ...

  5. UIImagePickerController导航字体颜色和背景

    创建UIImagePickerController // 创建图片选择器 UIImagePickerController *picker = [[UIImagePickerController all ...

  6. Use an LM317 as 0 to 3V adjustable regulator

    Most engineers know that they can use an inexpensive, three-terminal adjustable regulator, such as F ...

  7. head first---------facade design pattern

    head first----------外观模式或者门面模式         外观模式又名门面模式:提供了一个统一的接口,用来访问子系统中的一群接口.外观模式定义了一个高层接口,从而让子系统更容易使用 ...

  8. appium+python自动化26-模拟手势点击坐标(tap)

    ​# 前言: 有时候定位元素的时候,你使出了十八班武艺还是定位不到,怎么办呢?(面试经常会问) 那就拿出绝招:点元素所在位置的坐标 tap用法 1.tap是模拟手指点击,一般页面上元素 的语法有两个参 ...

  9. soa文章摘抄

    from: http://blog.vsharing.com/fengjicheng/MC19136/ 浅析深究什么是SOA? (入选推荐日志,加10币)浅析深究什么是SOA? 金蝶中间件有限公司总经 ...

  10. 《Linux兵书》

    <Linux兵书> 基本信息 作者: 刘丽霞    杨宇 丛书名: 程序员藏经阁 出版社:电子工业出版社 ISBN:9787121219924 上架时间:2014-1-13 出版日期:20 ...