企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### [选取路径部分片段](https://lingcoder.gitee.io/onjava8/#/book/17-Files?id=%e9%80%89%e5%8f%96%e8%b7%af%e5%be%84%e9%83%a8%e5%88%86%e7%89%87%e6%ae%b5) **Path**对象可以非常容易地生成路径的某一部分: ~~~ // files/PartsOfPaths.java import java.nio.file.*; public class PartsOfPaths { public static void main(String[] args) { System.out.println(System.getProperty("os.name")); Path p = Paths.get("PartsOfPaths.java").toAbsolutePath(); for(int i = 0; i < p.getNameCount(); i++) System.out.println(p.getName(i)); System.out.println("ends with '.java': " + p.endsWith(".java")); for(Path pp : p) { System.out.print(pp + ": "); System.out.print(p.startsWith(pp) + " : "); System.out.println(p.endsWith(pp)); } System.out.println("Starts with " + p.getRoot() + " " + p.startsWith(p.getRoot())); } } /* 输出: Windows 10 Users Bruce Documents GitHub on-java ExtractedExamples files PartsOfPaths.java ends with '.java': false Users: false : false Bruce: false : false Documents: false : false GitHub: false : false on-java: false : false ExtractedExamples: false : false files: false : false PartsOfPaths.java: false : true Starts with C:\ true */ ~~~ 可以通过**getName()**来索引**Path**的各个部分,直到达到上限**getNameCount()\*\*。**Path\*\* 也实现了**Iterable**接口,因此我们也可以通过增强的 for-each 进行遍历。请注意,即使路径以**.java**结尾,使用**endsWith()**方法也会返回**false**。这是因为使用**endsWith()**比较的是整个路径部分,而不会包含文件路径的后缀。通过使用**startsWith()**和**endsWith()**也可以完成路径的遍历。但是我们可以看到,遍历**Path**对象并不包含根路径,只有使用**startsWith()**检测根路径时才会返回**true**。