java - 如何在Java中查找与通配符字符串匹配的文件?

标签 java file wildcard

这应该很简单。如果我有一个像这样的字符串:

../Test?/sample*.txt

那么获取与此模式匹配的文件列表的普遍接受的方法是什么? (例如,它应该匹配 ../Test1/sample22b.txt../Test4/sample-spiffy.txt 但不匹配 ../Test3/sample2.等等../Test44/sample2.txt)

我查看了org.apache.commons.io.filefilter.WildcardFileFilter它似乎是正确的野兽,但我不确定如何使用它来查找相对目录路径中的文件。

我想我可以查找 ant 的源代码,因为它使用通配符语法,但我一定在这里遗漏了一些非常明显的东西。

(编辑:上面的例子只是一个示例案例。我正在寻找在运行时解析包含通配符的通用路径的方法。我根据mmyers的建议弄清楚了如何做到这一点但这有点烦人。更不用说 java JRE 似乎会从单个参数自动解析 main(String[] 参数) 中的简单通配符,以“节省”我的时间和麻烦...我很高兴我混合中没有非文件参数。)

最佳答案

尝试FileUtils来自Apache commons-io (listFilesiterateFiles 方法):

File dir = new File(".");
FileFilter fileFilter = new WildcardFileFilter("sample*.java");
File[] files = dir.listFiles(fileFilter);
for (int i = 0; i < files.length; i++) {
   System.out.println(files[i]);
}

为了解决 TestX 文件夹的问题,我首先会遍历文件夹列表:

File[] dirs = new File(".").listFiles(new WildcardFileFilter("Test*.java");
for (int i=0; i<dirs.length; i++) {
   File dir = dirs[i];
   if (dir.isDirectory()) {
       File[] files = dir.listFiles(new WildcardFileFilter("sample*.java"));
   }
}

这是一个相当“强力”的解决方案,但应该可以正常工作。如果这不符合您的需求,您可以随时使用 RegexFileFilter .

关于java - 如何在Java中查找与通配符字符串匹配的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56869895/

相关文章:

android - ANDROID 中的 java.lang.NoClassDefFoundError : javax. print.PrintServiceLookup

C# TCP 文件传输 - 图像半传输

java - AssertJ `containsExactly` 带有通配符的断言列表

具有上界通配符的 Java 泛型

java - 使用 Spring Data MongoDB 驱动程序处理未知属性

java - hibernate 持续不工作

java - 从文件或字符串变量读取有什么区别

T 和 ? 之间的 Java 泛型区别?延伸 T

java - 在 Fragment 中使用 MainActivity 的值

java - 将 Hazelcast 配置导出到文件