0Pricing
Java Academy · 课时

Path:表示文件位置

创建 Path 对象,解析和相对化路径,并操作路径组成部分

Path:表示文件位置 是 CoddyKit 上的免费 Java Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。

Path 简介

java.nio.file.Path 接口表示文件系统中的文件或目录位置。它用功能更丰富且独立于平台的 API 取代了旧版的 java.io.File 类。

import java.nio.file.*;

Path p1 = Path.of("/home/user/documents/report.txt");
Path p2 = Paths.get("/home", "user", "documents", "report.txt");

System.out.println(p1); // /home/user/documents/report.txt
System.out.println(p1.equals(p2)); // true

Path 的组成部分

提取路径的组成部分:

Path path = Path.of("/home/user/docs/report.txt");

System.out.println(path.getFileName()); // report.txt
System.out.println(path.getParent());   // /home/user/docs
System.out.println(path.getRoot());     // /
System.out.println(path.getNameCount()); // 4
System.out.println(path.getName(0));    // home
System.out.println(path.getName(3));    // report.txt

相对路径与绝对路径

路径可以是绝对路径(从根目录开始),也可以是相对路径(相对于当前目录)。使用 isAbsolute() 进行检查,并使用 toAbsolutePath() 将相对路径解析为相对于当前工作目录的路径。

Path rel = Path.of("docs/report.txt");
Path abs = Path.of("/home/user/docs/report.txt");

System.out.println(rel.isAbsolute()); // false
System.out.println(abs.isAbsolute()); // true

Path resolved = rel.toAbsolutePath(); // resolves against CWD
System.out.println(resolved);

resolve:组合路径

resolve(other) 会追加另一个路径。如果 other 是绝对路径,则会完全替换当前路径。

Path base = Path.of("/home/user");
Path docs = base.resolve("documents");
Path file = docs.resolve("report.txt");

System.out.println(file); // /home/user/documents/report.txt

// Resolving an absolute path replaces:
Path abs = base.resolve(Path.of("/etc/config"));
System.out.println(abs); // /etc/config

relativize:计算相对路径

relativize(other) 会计算从当前路径到 other 的相对路径:

Path from = Path.of("/home/user");
Path to   = Path.of("/home/user/docs/report.txt");

Path rel = from.relativize(to);
System.out.println(rel); // docs/report.txt

// Verify:
System.out.println(from.resolve(rel)); // /home/user/docs/report.txt

normalize:移除冗余部分

normalize() 会从路径中移除 . 和 .. 片段:

Path messy = Path.of("/home/user/../user/./docs/./report.txt");
Path clean = messy.normalize();
System.out.println(clean); // /home/user/docs/report.txt

startsWith 与 endsWith

检查路径之间的前缀或后缀关系:

Path p = Path.of("/home/user/docs/report.txt");

System.out.println(p.startsWith("/home/user")); // true
System.out.println(p.startsWith("/home/other")); // false
System.out.println(p.endsWith("report.txt"));    // true
System.out.println(p.endsWith("docs/report.txt")); // true

转换为 File 和 URI

在需要时,将 Path 转换为旧版 File 类或统一资源标识符:

Path path = Path.of("/home/user/report.txt");

java.io.File file = path.toFile();
System.out.println(file.exists()); // depends on filesystem

java.net.URI uri = path.toUri();
System.out.println(uri); // file:///home/user/report.txt

不同平台上的 Path

Path.of() 使用平台的分隔符。在 Windows 上,路径使用反斜杠;在 Unix 上使用正斜杠。该 API 会透明地处理这些差异。

// Portable path construction (works on all platforms):
Path config = Path.of("config", "app", "settings.json");
// On Unix: config/app/settings.json
// On Windows: config\app\settings.json
System.out.println(config);

遍历 Path 元素

使用 for-each 循环或 iterator() 遍历各个名称元素:

Path path = Path.of("/home/user/docs/report.txt");

for (Path element : path) {
    System.out.println(element); // home, user, docs, report.txt
}
// Note: root ("/") is not included in iteration

subpath:提取路径片段

subpath(begin, end) 返回由名称元素范围组成的相对路径:

Path p = Path.of("/home/user/docs/report.txt");
// Indices: home=0, user=1, docs=2, report.txt=3

System.out.println(p.subpath(1, 3)); // user/docs
System.out.println(p.subpath(0, 2)); // home/user

快速检查

给定 Path.of("/home/user").resolve("docs/file.txt"),结果是什么?

回顾:Path API

要点:

  • Path.of() / Paths.get() 创建 Path 实例
  • 使用 getFileName、getParent、getRoot、getName 和 getNameCount 获取组成部分
  • resolve() 追加路径;relativize() 计算相对路径;normalize() 清理 ./ 和 ../
  • 使用 startsWith/endsWith 检查前缀或后缀
  • 独立于平台——分隔符会自动处理

常见问题解答

「Path:表示文件位置」课时是免费的吗?

是的 — 「Path:表示文件位置」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。

「Path:表示文件位置」这节课中我会学到什么?

创建 Path 对象,解析和相对化路径,并操作路径组成部分 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Java Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「Path:表示文件位置」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Java Academy 课中编写并运行代码吗?

能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Path:表示文件位置
  2. Files 工具:读取、写入、复制与移动
  3. 使用 Files.walk 遍历目录树
  4. WatchService:监控文件变化
← 返回 Java Academy