如何在Java中找到与通配符字符串匹配的文件?这应该很简单。如果我有这样的绳子:../Test?/sample*.txt那么,获得与此模式匹配的文件列表的普遍接受的方法是什么?(例如,它应该匹配../Test1/sample22b.txt和../Test4/sample-spiffy.txt但不是../Test3/sample2.blah或../Test44/sample2.txt)我看过org.apache.commons.io.filefilter.WildcardFileFilter它似乎是正确的,但我不知道如何使用它来查找相对目录路径中的文件。我想我可以查找Ant的源代码,因为它使用通配符语法,但是这里肯定遗漏了一些非常明显的东西。(编辑上面的例子只是一个例子。我正在寻找在运行时解析包含通配符的一般路径的方法。我根据Mmyers的建议想出了怎么做,但这有点烦人。更不用说,java JRE似乎自动解析主参数(字符串[]参数)中的简单通配符,以“节省”我的时间和麻烦.我只是很高兴我没有在混合中有非文件的争论。)
3 回答

哆啦的时光机
TA贡献1779条经验 获得超6个赞
DirectoryScanner scanner = new DirectoryScanner();scanner.setIncludes(new String[]{"**/*.java"}); scanner.setBasedir("C:/Temp");scanner.setCaseSensitive(false);scanner.scan();String[] files = scanner.getIncludedFiles();

隔江千里
TA贡献1906条经验 获得超10个赞
FileUtils
listFiles
iterateFiles
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")); }}

Smart猫小萌
TA贡献1911条经验 获得超7个赞
try (DirectoryStream<Path> dirStream = Files.newDirectoryStream( Paths.get(".."), "Test?/sample*.txt")) { dirStream.forEach(path -> System.out.println(path)); }
PathMatcher pathMatcher = FileSystems.getDefault() .getPathMatcher("regex:Test./sample\\w+\\.txt"); try (DirectoryStream<Path> dirStream = Files.newDirectoryStream( new File("..").toPath(), pathMatcher::matches)) { dirStream.forEach(path -> System.out.println(path)); }
添加回答
举报
0/150
提交
取消