利用递归解决文件搜索问题

要达到的效果是给出一个文件路径和文件名找到路径内对应的文件,并且输出文件路径。

       首先进行问题分析,我们初步的想法是对每一个文件夹内的文件进行比较,如果和你输入的文件名相同,则匹配成功,输出路径。

       我们可以利用    .listFiles()   来获取到一个目录下的所有以及目录和文件,这时候就可以进行分类,如果是文件,则判断是否匹配,如果是目录,则继续重复上述操作(获取该文件夹的所有第一级文件和目录,分别判断....)直到搜索完所有目录为止。

        这时候可以发现,我们其实在搜索过程中不断执行定义的搜索方法本身,代码如下:

import java.io.File;

public class search {
     public static void main(String[] args) {

         searchfile(new File("D:/"),".gitignore");

     }
    /**
     * 文件搜索
     * @param dir 搜索路径
     * @param name 搜索文件名
     */
     public static void searchfile(File dir,String name){

     if(dir ==null || !dir.exists() ||dir.isFile()){
        return;
     }
     //获取搜索路径的所有第一级文件名和目录名
     File[] files = dir.listFiles();
     //确保有文件对象
     if(files!=null&&files.length>0){
         //进行循环拿到单个文件或目录
         for (File file : files) {
             //如果是文件则判断是否为需要的文件
             if(file.isFile()){
                 if ( file.getName().contains(name)){
                     //输出绝对位置
                     System.out.println("找到了文件所在位置"+file.getAbsolutePath());
                 }
             }
           else {
                 //如果是文件夹,则需要再次进行一边搜索操作
                 searchfile(file,name);

             }
         }
       }

     }

 }

结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值