Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaGlob模式搜索(区分大小写)文件?_Java_Glob - Fatal编程技术网

如何使用JavaGlob模式搜索(区分大小写)文件?

如何使用JavaGlob模式搜索(区分大小写)文件?,java,glob,Java,Glob,我正在检查上课的方法。该方法的文件说明: 对于glob和regex语法,匹配的详细信息,例如 匹配是否区分大小写,是否依赖于实现 因此没有具体说明 我对此进行了测试,并了解到默认情况下它不区分大小写。如何区分大小写 我在Windows7上使用JDK7u25。否,默认情况下它不区分大小写。正如doc所说,区分大小写取决于实现 NTFS保留大小写,但不区分大小写。也就是说,名为README.txt的文件将保留其大小写(保留大小写);但是,试着用名称Readme.TXT来查找它会起作用(不区分大小写)

我正在检查上课的方法。该方法的文件说明:

对于glob和regex语法,匹配的详细信息,例如 匹配是否区分大小写,是否依赖于实现 因此没有具体说明

我对此进行了测试,并了解到默认情况下它不区分大小写。如何区分大小写


我在Windows7上使用JDK7u25。

否,默认情况下它不区分大小写。正如doc所说,区分大小写取决于实现

NTFS保留大小写,但不区分大小写。也就是说,名为
README.txt
的文件将保留其大小写(保留大小写);但是,试着用名称
Readme.TXT
来查找它会起作用(不区分大小写)

Unix系统不是这种情况,其文件系统区分大小写

不幸的是,这是没有办法的!除了创建自己的
文件系统
实现之外,还可以包装默认值并使其区分大小写

下面是一个用途非常有限的文件系统的示例,它能够生成文件扩展名的“区分大小写匹配”:

public final class CaseSensitiveNTFSFileSystem
    extends FileSystem
{
    private static final Pattern MYSYNTAX = Pattern.compile("glob:\\*(\\..*)");

    private final FileSystem fs;

    // "fs" is the "genuine" FileSystem provided by the JVM
    public CaseSensitiveNTFSFileSystem(final FileSystem fs)
    {
        this.fs = fs;
    }

    @Override
    public PathMatcher getPathMatcher(final String syntaxAndPattern)
    {
        final Matcher matcher = MYSYNTAX.matcher(syntaxAndPattern);
        if (!matcher.matches())
            throw new UnsupportedOperationException();
        final String suffix = matcher.group(1);
        final PathMatcher orig = fs.getPathMatcher(syntaxAndPattern);

        return new PathMatcher()
        {
            @Override
            public boolean matches(final Path path)
            {
                return orig.matches(path)
                    && path.getFileName().endsWith(suffix);
            }
        };
    }

    // Delegate all other methods of FileSystem to "fs"
}

谢谢你的快速回复。你能帮我创建自己的Filsystem实现并通过举例说明区分大小写吗?嗯,这一点都不简单。你必须使用构图和解释模式。。。这可不容易,谢谢。但我不想使用Pattern和Matcher,因为我想在我的功能中保持regex和glob的分离。无论如何,谢谢。这里我只使用模式来识别
路径匹配器的语法。当然是有限的子集!但这说明了如何做到这一点。