这应该很简单.如果我有这样的字符串:
../Test?/sample*.txt
Run Code Online (Sandbox Code Playgroud)
那么获得与此模式匹配的文件列表的普遍接受的方法是什么?(例如,它应匹配../Test1/sample22b.txt,../Test4/sample-spiffy.txt但不是../Test3/sample2.blah或../Test44/sample2.txt)
我已经看了一下org.apache.commons.io.filefilter.WildcardFileFilter它似乎是正确的野兽,但我不知道如何使用它来查找相对目录路径中的文件.
我想我可以查看ant的源代码,因为它使用了通配符语法,但我必须在这里遗漏一些非常明显的东西.
(编辑:上面的例子只是一个示例案例.我正在寻找在运行时解析包含通配符的常规路径的方法.我根据mmyers的建议想出了如何做到这一点,但这有点烦人.更不用说java JRE似乎从一个参数中自动解析main(String []参数)中的简单通配符,以"节省"我的时间和麻烦......我很高兴我没有非文件参数混合.)
我的目的是使用存储在列表中的关键字索引包含pdf文件(以及其他文件类型)的任意目录.我有一个传统的解决方案,我听说使用例如SimpleGraph的基于图形的解决方案可以更优雅/高效并且独立于目录结构.
基于图形的解决方案(例如SimpleGraph)会是什么样的?
传统解决方案
// https://stackoverflow.com/a/14051951/1497139
List<File> pdfFiles = this.explorePath(TestPDFFiles.RFC_DIRECTORY, "pdf");
List<PDFFile> pdfs = this.getPdfsFromFileList(pdfFiles);
…
for (PDFFile pdf:pdfs) {
// https://stackoverflow.com/a/9560307/1497139
if (org.apache.commons.lang3.StringUtils.containsIgnoreCase(pdf.getText(), keyWord)) {
foundList.add(pdf.file.getName()); // here we access by structure (early binding)
// - in the graph solution by name (late binding)
}
}
Run Code Online (Sandbox Code Playgroud)