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

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

代码实现:

  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. }

最新文章

  1. Abundant Resources
  2. [Linux] LD_LIBRARY_PATH
  3. oc程序编译【-framework Foundation 编译】
  4. Wooyun隐写术总结
  5. mysql在一台服务器搭建主从1
  6. flash读取XML节点内容以及节点属性
  7. WPF FindName()没找到指定名称的元素
  8. 使用shiro安全框架上传文件时用HttpSession获取ServletContext为null问题解决方法。
  9. Android文本Flood it游戏源代码
  10. face-alignment:用 pytorch 实现的 2D 和 3D 人脸对齐库
  11. 如何安装Magento 2.0
  12. 一些不常用但又很有用的css小tips
  13. Spring cloud系列之Zuul配置项中sensitiveHeaders和ignoredHeaders
  14. 遍历出文档内所有元素的tagName
  15. Java实现随机生成车牌号
  16. 【亲测】<g++/gcc>CentOS下g++: command not found问题的解决(c++环境安装)
  17. ICC 常用命令
  18. 线程同步之mutex和event区别
  19. Spring Security教程(二):通过数据库获得用户权限信息
  20. 1、一、Introduction(入门): 0、Introduction to Android(引进到Android)

热门文章

  1. poj 2096Collecting Bugs
  2. BZOJ1086 SCOI2005王室联邦
  3. 「WC2010」重建计划(长链剖分/点分治)
  4. 快速傅里叶变换(FFT)相关内容汇总
  5. Week Five
  6. 【推导】【线段树】hdu5929 Basic Data Structure
  7. Pollard-rho算法:模板
  8. ms08-067漏洞的复现
  9. 使用百度ai接口加图灵机器人完成简单web版语音对话
  10. python开发_python文件操作