Java 通过递归实现简单的文件搜索

要求:

传入文件名(或者文件类型),和要查找的文件目录,使用递归遍历此文件目录下的所有文件,找到该文件对象并输出

如果没有找到则输出未找到

直接上代码

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class SearchFile {

    public static List<File> searchResult = new ArrayList<>();//存储查询结果

    public static void main(String[] args) {
        //进行测试
        searchFilesByname("D:\\JAVA\\FileTest","a.txt");
        searchFilesByname("D:\\JAVA\\FileTest","txt");
        searchFilesByname("D:\\JAVA\\FileTest","java");
        searchFilesByname("D:\\JAVA\\FileTest","xt");
    }

    public static void searchFilesByname(String directoryPath,String searchFileName){

        List<File> getResult = getFiles(new File(directoryPath),searchFileName);//获取查询结果

        System.out.println("-----------------------搜索结果-----------------");
        if(getResult.isEmpty()){
            System.out.println(searchFileName+"的搜作结果:在"+directoryPath+"路径下未找到此文件");
        }else{
            System.out.println(searchFileName+"找到了"+getResult.size()+"个结果:");
           for(int i=0;i<getResult.size();i++){
               System.out.println(getResult.get(i));//遍历输出查询结果
           }
        }

        //执行完成清空List结果集
        searchResult.clear();
    }

    public static List<File> getFiles(File file, String filename){
        for(File f : file.listFiles()){
            if(f.isDirectory()){//如果该对象是目录,则递归进入该目录继续搜索遍历
                getFiles(f,filename);
            }
            else{ //不是目录则进行匹配操作
                if(f.getName().endsWith(filename)){ //endWith匹配字符串尾部,这里匹配的是所有文件名尾部
                    searchResult.add(f);
                }
            }
        }
        return searchResult;
    }
}

我在D:\JAVA\FileTest的目录结构如下:

D:\JAVA\FILETEST

│ 测试.txt

└─测试文件夹

└─测试文件夹的子文件夹

a.txt

程序输出结果:

猜你喜欢

转载自blog.csdn.net/c_o_d_e_/article/details/107192557