Sot*_*lis 63
javadoc for FileSystem#getPathMatcher()有一些非常好的例子和解释
*.java Matches a path that represents a file name ending in .java
*.* Matches file names containing a dot
*.{java,class} Matches file names ending with .java or .class
foo.? Matches file names starting with foo. and a single character extension
/home/*/* Matches /home/gus/data on UNIX platforms
/home/** Matches /home/gus and /home/gus/data on UNIX platforms
C:\\* Matches C:\foo and C:\bar on the Windows platform (note that the backslash is escaped; as a string literal in the Java Language the pattern would be "C:\\\\*")
Run Code Online (Sandbox Code Playgroud)
所以/home/**会匹配/home/gus/data,但/home/*不会.
/home/*是直接在/home目录中说每个文件.
/home/**在说任何目录里面的每个文件/home.
*vs的例子**.假设您当前的工作目录是/Users/username/workspace/myproject,则以下内容仅匹配./myproject文件(目录).
PathMatcher pathMatcher = FileSystems.getDefault().getPathMatcher("glob:/Users/username/workspace/*");
Files.walk(Paths.get(".")).forEach((path) -> {
path = path.toAbsolutePath().normalize();
System.out.print("Path: " + path + " ");
if (pathMatcher.matches(path)) {
System.out.print("matched");
}
System.out.println();
});
Run Code Online (Sandbox Code Playgroud)
如果使用**,它将匹配该目录中的所有文件夹和文件.
Yog*_*ity 11
双星号 ( **) 匹配多个嵌套目录中的零个或多个字符。在解释了主要概念之后,我将通过示例逐步解释双星号以及其他有用的通配符。
甲水珠是字符串文字和/或用于匹配的文件路径通配符。使用一个或多个 glob 在文件系统上定位文件称为 globbing。通配不仅限于 Java。它还用于匹配各种配置文件中的文件,例如.gitignore在 Git 中列出被忽略的文件和目录,在 Unix 操作系统中选择文件和文件夹ls **/*.java等。
以下是通配的一些最重要的部分。双星号( **) 是其中之一:
/)在 Globbing 中,无论使用什么操作系统,正斜杠字符 ( /) 始终充当分隔符。一个片段是来自这两个分离器之间的一切。
例子: tests/HelloWorld.java
这里, testsandHelloWorld.java是段, and/是分隔符。
*)单个星号 (*) 匹配一个段中的零个或多个字符。它用于对一个目录中的文件进行通配。
例子: *.java
此 glob 将匹配文件,例如HelloWorld.java但不匹配tests/HelloWorld.java或 之类的文件tests/ui/HelloWorld.java。
**)双星号 ( **) 匹配多个段中的零个或多个字符。它用于对嵌套目录中的文件进行通配。
例子: tests/**/*.java
在这里,文件选择将被限制在tests目录中。glob 将匹配诸如tests/HelloWorld.java, tests/ui/HelloWorld.java,之类的文件tests/ui/feature1/HelloWorld.java。
?)问号( ?) 匹配一个段中的单个字符。它可用于匹配名称仅相差一个字符的文件或文件夹。
例子: tests/?at.java
这将匹配文件,如tests/cat.java,test/Cat.java,test/bat.java等
[abc])方括号 ( [...]) 匹配方括号中给出的单个字符。
例子: tests/[CB]at.java
这个 glob 将匹配文件,如tests/Cat.java或tests/Bat.java
[a-z])方括号范围 ( [a-z]),匹配范围中给定的一个字符。
例子: tests/feature[1-9]/HelloWorld.java
这个 glob 将匹配文件,如tests/feature1/HelloWorld.java,test/feature2/HelloWorld.java等等... upto 9。
!)否定 ( !) 用于排除某些文件。
例子: tests/[!C]at.java
这将排除该文件tests/Cat.java并匹配tests/Bat.java, tests/bat.java,等文件tests/cat.java。
就是这样!希望有帮助。
| 归档时间: |
|
| 查看次数: |
37845 次 |
| 最近记录: |