首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 7 glob问题

Java 7 glob问题
EN

Stack Overflow用户
提问于 2018-10-31 14:09:13
回答 1查看 123关注 0票数 0

正如我想要的那样,我无法真正理解如何在java中处理glob。下面是一个简短的节目:

代码语言:javascript
复制
public class Test{
    public static void main(String args[]) throws IOException{
        Path p1 = Paths.get("C:\\Users\\all\\Test\\cool.jpg");
        Path p2 = Paths.get("cool.jpg");
        PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:**/*.jpg")
        System.out.println(matcher.matches(p1));
        System.out.println(matcher.matches(p2));
    }   
}

结果是正确/假的。

使用"glob:*.jpg“运行结果为FALSE / TRUE

所以它看起来像是第一次在文件夹外搜索被定位的项目(java文件)和第二次在文件夹中找到java文件。

如果我将第二条路径更改为任何其他位置(除了我的java项目之外),结果是:对于glob:**/*..jpg -> TRUE/TRUE,对于glob:*.jpg -> FALSE/FALSE。

所以我的问题是:我很明白使用glob:*?它在文件夹中搜索被java项目定位并使用glob:**/*.?它搜索一个特定的路径,而不是被java项目定位的文件夹。因为在文档中:

glob模式指定为字符串,并与其他字符串相匹配,例如目录或文件名。Glob语法遵循几个简单的规则:星号*匹配任意数量的字符(包括无字符)。两个星号,**,工作方式类似于*,但跨越目录边界。此语法通常用于匹配完整路径。

但是没有提到指向Java项目所在目录的目录边界。

EN

回答 1

Stack Overflow用户

发布于 2018-10-31 14:21:56

将glob模式更改为:

代码语言:javascript
复制
"glob:**.jpg"

您的模式只匹配包含至少一个目录的文件路径。

例如,下面的模式只匹配至少两个目录的路径(例如路径: a/b/image.jpg)

代码语言:javascript
复制
"glob:**/**/*.jpg"

而只是FYI,它不搜索文件,它只测试给定的路径是否匹配模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53085359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档