当前位置: 首页 > 面试题库 >

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

毋举
2023-03-14
问题内容

这应该非常简单。如果我有这样的字符串

../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似乎可以从单个参数中自动解析main(String []参数)中的简单通配符,以“节省”我的时间和麻烦…我很高兴我没有在非文件参数中混合。)


问题答案:

考虑来自Apache AntDirectoryScanner

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)。



 类似资料:
  • 比如说我有这个: 我想做两件事: 1) 使其成为当且仅当用户准确键入<代码>时!测试和其他内容,它将在通道中打印出测试 2)使其成为如果用户键入首先后跟空格和至少一个其他字符串字符,它将打印出——例如:a)不会打印出任何东西,b)(后跟一个空格)不会打印出任何东西,c)不会打印出任何东西,d)不会打印出任何东西,但是e)将打印出, f)将打印出, g)将打印出, and h)将打印出等。 我只知道

  • 我有一个包含通配符的8个字符长的字符串列表(由表示),我需要将这些字符串与同样具有通配符的输入字符串匹配。所述字符串由四个字母字符(A-Z)和四个数字(0-9)组成。为了更容易理解,下面是一组字符串的示例: 如果我给作为输入,那么每次比较都应该解析为true。 此处理发生在线程内部,外部交互可以更改输入将检查的字符串列表(仅添加或删除)。

  • 问题 你想使用 Unix Shell 中常用的通配符(比如 *.py , Dat[0-9]*.csv 等)去匹配文本字符串 解决方案 fnmatch 模块提供了两个函数—— fnmatch() 和 fnmatchcase() ,可以用来实现这样的匹配。用法如下: >>> from fnmatch import fnmatch, fnmatchcase >>> fnmatch('foo.txt',

  • 问题内容: 我有一个oracle表,该表具有名为system_access的列,该列具有以下数据: 基于上述示例数据,我不确定我的查询仅检索与“只读”和/或“只读”的确切单词匹配的记录 我不需要具有“只读(否)”,后接空格或方括号的记录,或“只读(请参阅mgr)”,其后或接续无空格和括号的记录。 因此,根据以上示例数据,我只会返回两行,即: 如前所述,只有与字符串“ Read Only”或“ re

  • 问题内容: 我正在编写一个简单的调试程序,该程序将简单的字符串作为输入,其中可以包含星号以指示通配符匹配-任何 我以为我会简单地采用该模式,转义其中的任何正则表达式特殊字符,然后将其替换为。然后使用正则表达式匹配器。 但是我找不到任何Java函数来转义正则表达式。我能找到的最佳匹配,然而这正好将与在开始和字符串的结尾。 Java中有什么可以让您简单地进行通配符匹配而不必从头开始实现算法的? 问题答

  • 我试图检查字符串是否包含完全匹配。例如: String str="这是我的字符串,具有-Policy和-p" 我怎样才能做到以下几点: