使用递归实现文件夹的遍历,查找和删除操作
最近学习了File类和递归法,于是便想写一个包含文件夹的遍历,文件的精确查找和按条件查找,对非空文件夹的删除的案例,想和大家交流一下。
涉及内容:递归方法的使用,File基本知识。
设计亮点:
1.对于.多级目录的打印,遍历之前,无从知道到底有多少级目录,所以我们使用递归来实现。
2.. 遍历目录时,获取的子文件,通过文件名称,判断是否符合条件。
2.1对于精确查找,我们通过文件名称的对比来实现查找。
2.2对于按条件查找,我们通过文件后缀的对比来实现查找。
3.由于File中的delete方法删除的文件夹必须为空,我们便使用递归遍历与删除相结合的方式来删除文件夹。
源码:
实现代码:
1 package cn.homeWork01.demo06Recurison; 2 3 // 目录遍历及搜索并删除此非空文件夹 4 5 import java.io.File; 6 7 public class Demo01 { 8 public static void main(String[] args) { 9 // 此文件夹为进行操作的文件夹 10 File file = new File("F:\\Test\\src"); 11 // 调用遍历文件夹的方法 12 //printFile(file); 13 // 调用搜索文件方法 14 // 此处须切换47——50行处代码实现不同方式的查找 15 // 当前方法为按文件名精确查找 16 search(file,"Demo03.java"); 17 // 此处为按文件后缀查找 18 //search(file,".java"); 19 // 调用删除文件夹方法 20 //delete(file); 21 } 22 23 // 遍历文件夹 24 public static void printFile(File file){ 25 File[] dirs = file.listFiles(); 26 // 输出文件夹的绝对路径 27 System.out.println(file); 28 for (File dir : dirs) { 29 if(dir.isDirectory()){ 30 // 调用递归,逐层搜索 31 printFile(dir); 32 }else{ 33 // 输出文件名称 34 System.out.println(dir.getName()); 35 } 36 } 37 } 38 39 // 按条件查找 40 public static void search(File file,String name){ 41 File[] dirs = file.listFiles(); 42 for (File dir : dirs) { 43 if(dir.isDirectory()){ 44 // 调用递归,逐层搜索 45 search(dir,name); 46 }else // 按文件名精确查找 47 if(dir.getName().equals(name)){ 48 49 // 按后缀查找 50 //if(dir.getName().toLowerCase().endsWith(name)){ 51 // 输出文件夹的绝对路径 52 System.out.println(file); 53 // 输出文件名称 54 System.out.println(dir.getName()); 55 } 56 } 57 } 58 59 // 删除文件夹 60 public static void delete(File file){ 61 File[] dirs = file.listFiles(); 62 for (File dir : dirs) { 63 if(dir.isDirectory()){ 64 // 调用递归,逐层删除 65 delete(dir); 66 }else{ 67 // 删除文件 68 boolean b = dir.delete(); 69 System.out.println(dir.getName()+" 删除状态:"+b); 70 } 71 } 72 // 删除文件夹 73 boolean b = file.delete(); 74 System.out.println(file.getName()+" 删除状态:"+b); 75 } 76 }
运行截图(部分截图):
遍历文件夹截图:

(此处为遍历src文件夹)
精确查找文件截图:

(此处为查找Demo03.java文件)
按条件查找文件截图:

(此处为查找以.java结尾的文件)
删除非空文件夹截图:

(此处为删除src文件夹)
注意:
src文件夹文件较多,看起来不太方便,非常抱歉!
本案例还有很多不足之处,希望大家能够及时纠正。当然更希望能够对您有用!

浙公网安备 33010602011771号