我的目录中有以下文件:
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]);
}
}
}
}
最佳答案
你会想要
FileFilter fileFilter = new WildcardFileFilter(Arrays.asList("*.log.*", "*.log"));
WildcardFileFilter
不适用于正则表达式。它适用于 UNIX 风格的通配符表达式。 *
表示任意数量的字符,?
表示一个字符。
关于java - Apache 公共(public) I/O。如何通过通配符过滤文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24433908/