这应该很简单。如果我有这样的字符串:
../Test?/sample*.txt
那么获取与此模式匹配的文件列表的普遍接受的方法是什么?(例如它应该匹配../Test1/sample22b.txtand../Test4/sample- spiffy.txt但不匹配../Test3/sample2.blahor ../Test44/sample2.txt)
../Test1/sample22b.txt
../Test4/sample- spiffy.txt
../Test3/sample2.blah
../Test44/sample2.txt
我看了看,org.apache.commons.io.filefilter.WildcardFileFilter它似乎是正确的野兽,但我不确定如何使用它在相对目录路径中查找文件。
org.apache.commons.io.filefilter.WildcardFileFilter
我想我可以查看 ant 的源代码,因为它使用通配符语法,但我必须在这里遗漏一些非常明显的东西。
( 编辑 :上面的例子只是一个示例案例。我正在寻找在运行时解析包含通配符的一般路径的方法。我根据 mmyers 的建议想出了如何做到这一点,但这有点烦人。更不用说java JRE似乎从单个参数自动解析main(String []参数)中的简单通配符以“节省”我的时间和麻烦......我很高兴我没有非文件参数混合。)
考虑来自 Apache Ant 的 DirectoryScanner:
DirectoryScanner scanner = new DirectoryScanner(); scanner.setIncludes(new String[]{"**/*.java"}); scanner.setBasedir("C:/Temp"); scanner.setCaseSensitive(false); scanner.scan(); String[] files = scanner.getIncludedFiles();
您需要参考 ant.jar(ant 1.7.1 约为 1.3 MB)。