正则表达式目录中的文件

n00*_*13f 8 java regex

是否可以使用正则表达式来获取与目录中给定模式匹配的文件的文件名,而无需手动遍历所有文件.

Bar*_*ers 26

你可以使用File.listFiles(FileFilter):

public static File[] listFilesMatching(File root, String regex) {
    if(!root.isDirectory()) {
        throw new IllegalArgumentException(root+" is no directory.");
    }
    final Pattern p = Pattern.compile(regex); // careful: could also throw an exception!
    return root.listFiles(new FileFilter(){
        @Override
        public boolean accept(File file) {
            return p.matcher(file.getName()).matches();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

编辑

因此,要匹配看起来像这样的文件:TXT-20100505-XXXX.trx哪里XXXX可以是任何四个连续的数字,请执行以下操作:

listFilesMatching(new File("/some/path"), "XT-20100505-\\d{4}\\.trx")
Run Code Online (Sandbox Code Playgroud)