java - Apache 公共(public) I/O。如何通过通配符过滤文件?

标签 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

最佳答案

你会想要

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

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

关于java - Apache 公共(public) I/O。如何通过通配符过滤文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24433908/

相关文章:

javascript - 通过文本字段过滤列表

javascript - 快速过滤 Angular Collection

c - 在c中execlp重定向stdin

java - 一种以奇怪的方式编写的方法,我的建议正确吗?

java - Java 中反转数组顺序

java - 程序不会等待请求用户输入

产生文本文件交替行的 Pythonic 方法

java - Hotspot JIT 编译器完成的任何指令重新排序是否可以重现?

arrays - Swift 字符串数组

file - 在 Swift 中,如何将现有二进制文件读入数组?