当前位置: 首页 > news >正文

Java 获取目录以及子目录下的sql文件

问题:得到指定目录以及子目录下指定后缀名的文件,这里是得到sql文件

项目文件结构是这样式的

比如我传参F:/sql  需要得到所有文件夹中的sql文件。

解决方案:

用到了FilenameFilter  以及 递归。

 

首先我们实现FilenameFiltre接口,重写accept方法

import java.io.File;
import java.io.FilenameFilter;

public class SqlFileFilter implements FilenameFilter {

    @Override
    public boolean accept(File dir, String name) {

        if (dir.isDirectory())
            return true;
        if (name.toLowerCase().endsWith(".sql"))
            return true;
        else
            return false;

    
    }

}

再者,我们写一个通用的递归调用方法

    public static List<File> listFile(File dir, FilenameFilter ff,
            boolean recursive) {
        List<File> list = new ArrayList<File>();
        File[] files = dir.listFiles(ff);
        if (files != null && files.length > 0) {
            for (File f : files) {
                // 如果是文件,添加文件到list中
                if (f.isFile()) {
                    list.add(f);
                }
                // 获取子目录中的文件,添加子目录中的经过过滤的所有文件添加到list
                else if (recursive) {
                    list.addAll(listFile(f, ff, true));
                }
            }
        }
        return list;
    }

 

其中第三个参数表示是否递归。

 

测试:

    public static void main(String[] args) {

        File file = new File("F:/javaresource/checktools/sql/");

        List<File> files = listFile(file, new SqlFileFilter(), true);

        for (File s : files) {
            System.out.println(s);
        }
    }

结果:

 

转载于:https://www.cnblogs.com/ydemo/p/10481969.html

相关文章:

  • IE中iframe标签显示在DIV之上的问题解决方案
  • SharePoint : 使用SPQuery对象时要注意的事项
  • Linux 上安装JDK
  • JUnit-4.13使用报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误
  • vi和vim的基本介绍
  • 流程理解篇-测试篇
  • 简单贪心题(看最多的电视节目)
  • TestDriven.NET 2.0单元测试
  • Spring Boot 2.x (十二):Swagger2的正确玩儿法
  • windows环境下memcache服务器使用经验
  • DIVCNT23 - Counting Divisors
  • 新的博客, 新的里程
  • [学习笔记]Dsu On Tree
  • ExtJS里的Xtype的对应组件
  • 我做SAP CRM One Order redesign的一些心得体会
  • Android 架构优化~MVP 架构改造
  • dva中组件的懒加载
  • Lsb图片隐写
  • Mocha测试初探
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vue--为什么data属性必须是一个函数
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 讲清楚之javascript作用域
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 如何用vue打造一个移动端音乐播放器
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用common-codec进行md5加密
  • 使用权重正则化较少模型过拟合
  • 微信支付JSAPI,实测!终极方案
  • #13 yum、编译安装与sed命令的使用
  • #etcd#安装时出错
  • #NOIP 2014# day.1 T2 联合权值
  • $refs 、$nextTic、动态组件、name的使用
  • (Note)C++中的继承方式
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (四) 虚拟摄像头vivi体验
  • (四)模仿学习-完成后台管理页面查询
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转)人的集合论——移山之道
  • .form文件_SSM框架文件上传篇
  • .gitattributes 文件
  • .NET 设计一套高性能的弱事件机制
  • .Net 中Partitioner static与dynamic的性能对比
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .Net8 Blazor 尝鲜
  • .net操作Excel出错解决
  • .NET轻量级ORM组件Dapper葵花宝典
  • .Net小白的大学四年,内含面经
  • [ C++ ] STL---stack与queue
  • [20161214]如何确定dbid.txt