在Java中使用glob匹配路径字符串

hsz*_*hsz 3 java glob

我有以下字符串作为全局规则:

**/*.txt
Run Code Online (Sandbox Code Playgroud)

并测试数据:

/foo/bar.txt
/foo/buz.jpg
/foo/oof/text.txt
Run Code Online (Sandbox Code Playgroud)

是否可以使用glob规则(不将glob转换为regex)来匹配测试数据并返回valud条目?

一个要求: Java 1.6

Bor*_*der 5

如果你有Java 7可以使用FileSystem.getPathMatcher:

final PathMatcher matcher = FileSystem.getPathMatcher("glob:**/*.txt");
Run Code Online (Sandbox Code Playgroud)

这需要将您的字符串转换为以下实例Path:

final Path myPath = Paths.get("/foo/bar.txt");
Run Code Online (Sandbox Code Playgroud)

对于早期版本的Java,您可能会从Apache Commons获得一些里程碑WildcardFileFilter.您也可以尝试从Spring中窃取一些代码AntPathMatcher- 这非常接近于glob-to-regex方法.