2020-09-07

使用递归实现文件夹的遍历,查找和删除操作

最近学习了File类和递归法,于是便想写一个包含文件夹的遍历,文件的精确查找和按条件查找,对非空文件夹的删除的案例,想和大家交流一下。

涉及内容:递归方法的使用,File基本知识。

设计亮点:

1.对于.多级目录的打印,遍历之前,无从知道到底有多少级目录,所以我们使用递归来实现。

2.. 遍历目录时,获取的子文件,通过文件名称,判断是否符合条件。

2.1对于精确查找,我们通过文件名称的对比来实现查找。

2.2对于按条件查找,我们通过文件后缀的对比来实现查找。

3.由于File中的delete方法删除的文件夹必须为空,我们便使用递归遍历与删除相结合的方式来删除文件夹。

源码:

实现代码

package cn.homeWork01.demo06Recurison;

// 目录遍历及搜索并删除此非空文件夹

import java.io.File;

public class Demo01 {
    public static void main(String[] args) {
        // 此文件夹为进行操作的文件夹
        File file = new File("F:\\Test\\src");
        // 调用遍历文件夹的方法
        printFile(file);
       // 调用搜索文件方法
        // 此处须切换47——50行处代码实现不同方式的查找
        // 当前方法为按文件名精确查找
        search(file,"Demo03.java");
        // 此处为按文件后缀查找
        search(file,".java");
        // 调用删除文件夹方法
        delete(file);
    }

    // 遍历文件夹
    public static void printFile(File file){
        File[] dirs = file.listFiles();
        // 输出文件夹的绝对路径
        System.out.println(file);
        for (File dir : dirs) {
            if(dir.isDirectory()){
                // 调用递归,逐层搜索
                printFile(dir);
            }else{
                // 输出文件名称
                System.out.println(dir.getName());
            }
        }
    }

    // 按条件查找
    public static void search(File file,String name){
        File[] dirs = file.listFiles();
        for (File dir : dirs) {
            if(dir.isDirectory()){
                // 调用递归,逐层搜索
                search(dir,name);
            }else // 按文件名精确查找
                 //if(dir.getName().equals(name)){

                // 按后缀查找
                if(dir.getName().toLowerCase().endsWith(name)){
                // 输出文件夹的绝对路径
                System.out.println(file);
                // 输出文件名称
                System.out.println(dir.getName());
            }
        }
    }

    // 删除文件夹
    public static void delete(File file){
        File[] dirs = file.listFiles();
        for (File dir : dirs) {
            if(dir.isDirectory()){
                // 调用递归,逐层删除
                delete(dir);
            }else{
                // 删除文件
                boolean b = dir.delete();
                System.out.println(dir.getName()+"  删除状态:"+b);
            }
        }
        // 删除文件夹
        boolean b = file.delete();
        System.out.println(file.getName()+"  删除状态:"+b);
    }
}

运行截图(部分截图):

遍历文件夹截图:

(此处为遍历src文件夹) 

精确查找文件截图:

(此处为查找Demo03.java文件) 

按条件查找文件截图:

(此处为查找以.java结尾的文件) 

删除非空文件夹截图: 

(此处为删除src文件夹)

注意:

src文件夹文件较多,看起来不太方便,非常抱歉!

 

本案例还有很多不足之处,希望大家能够及时纠正。当然更希望能够对您有用!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值