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)); // truePath 的组成部分
提取路径的组成部分:
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/configrelativize:计算相对路径
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.txtnormalize:移除冗余部分
normalize() 会从路径中移除 . 和 .. 片段:
Path messy = Path.of("/home/user/../user/./docs/./report.txt");
Path clean = messy.normalize();
System.out.println(clean); // /home/user/docs/report.txtstartsWith 与 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 iterationsubpath:提取路径片段
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 反馈 — 无需本地设置。