首页 > 基础资料 博客日记

FilenameFilter使用正则表达式匹配过滤文件名

2023-05-12 15:10:33基础资料围观337

FilenameFilter接口提供了对文件名字符串的过滤,可以通过正则表达式对文件进行匹配。在实现FilenameFilter时,可以将正则表达式作为参数传入过滤方法中,并在方法中使用Matcher类进行匹配。


下面是一个示例代码:


import java.io.*;
public class RegexFilter implements FilenameFilter {
    private final String pattern;
    public RegexFilter(String pattern) {
        this.pattern = pattern;
    }
    
    @Override
    public boolean accept(File dir, String name) {
        File f = new File(dir.getPath() + File.separator + name);
        return f.isFile() && name.matches(pattern);
    }
    public static void main(String[] args) {
        File dir = new File(".");
        String pattern = ".*\\.txt"; // 匹配所有以 .txt 结尾的文件
        File[] files = dir.listFiles(new RegexFilter(pattern));
        if (files != null) {
            for (File file : files) {
                System.out.println(file.getName());
            }
        }
    }
}


在上面的示例中,RegexFilter类用于过滤符合指定正则表达式的文件。accept方法的实现中使用了Matcher.matches()方法来进行文件名匹配,匹配成功返回true,否则返回false。在main方法中,将目录和正则表达式传入listFiles()方法来获取所有符合条件的文件列表。


标签:

相关文章

本站推荐

标签云