apache commons I / O.如何通过通配符过滤文件?

时间:2014-06-26 15:00:46

标签: java filter io wildcard

我在目录中有以下文件:

error.log
error1.log
Somename.log.trololo
AnotherName.logarifm

我希望以下文件位于数组中:

    error.log
    error1.log
    Somename.log.trololo

我写了以下代码:

FileFilter fileFilter = new WildcardFileFilter("*.log.*|*.log$");
File[] files = source.listFiles(fileFilter);

但我的阵列是空的。

如何写出正确的通配符?

更新

public class Test {
    public static void main(String[] args) {
        File source = new File("D:");
        if (source.isDirectory()) {
            FileFilter fileFilter = new WildcardFileFilter(Arrays.asList("*.log.*", "*.log"));
            File[] files = source.listFiles(fileFilter);
            for (int i = 0; i < files.length; i++) {
                System.out.println(files[i]);
            }
        }
    }
}

enter image description here

1 个答案:

答案 0 :(得分:2)

你想要

FileFilter fileFilter = new WildcardFileFilter(Arrays.asList("*.log.*", "*.log"));

WildcardFileFilter不适用于正则表达式。它适用于UNIX样式的通配符表达式。 *代表任意数量的字符,?代表一个字符。