这是 Java NIO 文件操作中非常关键的基础概念,下面我将给你清晰、分层地解释:
✅ 一句话理解
| 名称 | 用途 |
|---|---|
Path | 表示路径对象,比如 "C:/data/test.txt" |
Paths | 是一个工具类,用来通过静态方法创建 Path 对象 |
Path.of() | Java 11 新增的静态方法,也用来创建 Path 对象 |
🔍 详细解释
1. Path 是什么?
- 它是 Java NIO 中的接口(
java.nio.file.Path)。 - 用来表示文件路径或目录路径(而不是文件本身!)。
- 是对传统
File类的更现代、灵活的封装。 - 可以表示绝对路径或相对路径。
例子:
Path path = Paths.get("src", "main", "java");
System.out.println(path); // 输出:src\main\java
2. Paths 是什么?
- 是一个工具类(final class),位于
java.nio.file.Paths。 - 提供静态方法(最主要是
get())来创建Path对象。
例子:
Path path = Paths.get("data", "file.txt"); // 相对路径
Path absolute = Paths.get("C:/Users/User/file.txt"); // 绝对路径
其实:
Paths.get(...) 等价于 Path.of(...) (Java 11+)
3. Paths.get(...) 方法
- 是最常用的创建
Path的方式(Java 7~10 推荐方式)。 - 你可以传入一个或多个路径片段,自动拼接。
- 返回的是
Path类型。
Path p1 = Paths.get("foo", "bar.txt"); // → foo/bar.txt
4. Path.of(...) 方法(Java 11+ 推荐)
- Java 11 引入的新方式,用来代替
Paths.get(...)。 - 功能完全等价,但语义更清晰,因为你直接在
Path接口上操作。
Path p2 = Path.of("foo", "bar.txt"); // 同样是 foo/bar.txt
📌 官方推荐 Java 11+ 使用 Path.of() 替代 Paths.get()。
🔄 小对比表
| 方法 | 所在类 | Java 版本 | 说明 |
|---|---|---|---|
Paths.get(...) | java.nio.file.Paths | Java 7+ | 旧版写法(仍常用) |
Path.of(...) | java.nio.file.Path | Java 11+ | 新推荐写法,更简洁语义清晰 |
new File(...) | java.io.File | Java 1.0 | 传统写法,不推荐新项目使用 |
✅ 建议你怎么用?
- Java 8 或之前 → 用
Paths.get(...) - Java 11 及以后 → 用
Path.of(...)更清晰、更主流 - 推荐:避免直接使用
new File(...),可以用path.toFile()转换
🧪 小例子汇总
Path p1 = Paths.get("config", "settings.yml");
Path p2 = Path.of("config/settings.yml");
System.out.println(p1.equals(p2)); // true
// 转为 File 对象使用传统 API
File f = p1.toFile();
// 获取绝对路径
System.out.println(p1.toAbsolutePath());

被折叠的 条评论
为什么被折叠?



