用正则表达式匹配目录下的文件

用正则表达式匹配目录下的文件,可以更快速的查找到所需要的文件。

package file.service;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.Arrays;
import java.util.regex.Pattern;

public class FileClassFuction {

    public FileClassFuction() {
        // TODO Auto-generated constructor stub
    }
//定义一个内部类,实现FilenameFilter接口,这是一个文件过滤器接口
//用于传递给list方法,对dir目录下的文件过滤用的
//list方法对每个文件回调accept方法判定dir目录下的name文件是否满
//足我的用regex编译的pattern模式。如果满足返回true。将这个文件加
//入到list方法的返回string列表中。
    public static FilenameFilter filter(final String regex) {

        return new FilenameFilter() {
            private Pattern pattern = Pattern.compile(regex);

            @Override
            public boolean accept(File dir, String name) {
                return pattern.matcher(name).matches();
            }
        };
    }

    public static void main(String[] args) throws IOException {
        // 获取工程classpath目录当做基目录,依据这个基地址获取到其他地址
        String basePath = FileClassFuction.class.getResource("/").getFile();
        File file = new File(basePath, "../src/file/service/").getCanonicalFile();
        System.out.println(file.getCanonicalPath() + file.getName());
        String[] list;
        // 如果命令行参数没有,直接输出file下的文件和目录名出来
        if (args.length == 0) {
            list = file.list();
        } else {
            // 如果命令行参数给定一个正则表达式,那么用带参数的list方法会将file的文件
            // 和目录用正则表达式匹配,只输出匹配的文件和目录名
            // 这是我输入的正则表达式 表示该file目录下所有的java源文件 ".*\.java"
            System.out.println(args[0]);
            System.out.println(Pattern.compile(args[0]).toString());
            list = file.list(filter(args[0]));
        }

        Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
        for (String string : list) {
            System.out.println(string);
        }
    }

}

输出结果

先把我要寻找的file目录输出来,
然后把正则表达式输出
最后输出找到得文件
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值