java中Path和Paths,以及Paths.get(),Path.of()方法

该文章已生成可运行项目,

这是 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.PathsJava 7+旧版写法(仍常用)
Path.of(...)java.nio.file.PathJava 11+新推荐写法,更简洁语义清晰
new File(...)java.io.FileJava 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());
本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值