gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:34:00 25 4
gpt4 key购买 nike

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

../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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com