Skip to content

Path 和 Paths 类

Path 是文件路径的现代化表示,Paths 是创建 Path 的工具类。

就这么简单。让我们直接看怎么用。

创建 Path

java
// 方式 1:Paths.get() — 最常用
Path p1 = Paths.get("dir", "subdir", "file.txt");
Path p2 = Paths.get("C:\\Users\\test.txt"); // Windows 路径

// 方式 2:Path.of() — JDK 11+,更简洁
Path p3 = Path.of("dir/subdir/file.txt");
Path p4 = Path.of("dir", "subdir", "file.txt");

// 方式 3:从 File 转换
File file = new File("test.txt");
Path path = file.toPath();
File back = path.toFile();

推荐用 Path.of()(JDK 11+),语法更简洁。

路径解析

java
Path p = Path.of("dir/subdir/file.txt");

p.getFileName();        // "file.txt" — 文件名
p.getParent();          // "dir/subdir" — 父目录
p.getRoot();            // "/" 或 null(相对路径时)
p.getNameCount();       // 3 — 路径段数量
p.getName(0);           // "dir" — 第 0 段
p.getName(1);           // "subdir" — 第 1 段

// 规范化:去除冗余部分
Path normalized = Path.of("dir/./subdir/../file.txt").normalize(); // "dir/file.txt"

// 转绝对路径
Path absolute = p.toAbsolutePath();

路径拼接

java
Path base = Path.of("dir");

// resolve:拼接路径段
Path full = base.resolve("file.txt");     // "dir/file.txt"

// resolveSibling:拼接到父目录
Path relative = Path.of("dir/sub/file.txt").resolveSibling("other.txt"); // "dir/sub/other.txt"

判断方法

java
Path p = Path.of("dir/file.txt");

p.isAbsolute();        // false — 是否绝对路径
p.startsWith("dir");   // true — 是否以某路径开头
p.endsWith("file.txt"); // true — 是否以某路径结尾
p.equals(Path.of("dir/file.txt")); // true

Path vs File

操作FilePath
判断文件file.isFile()Files.isRegularFile(path)
判断目录file.isDirectory()Files.isDirectory(path)
创建文件file.createNewFile()Files.createFile(path)
删除file.delete()Files.delete(path)
重命名file.renameTo()Files.move(path, target)

结论:用 Path + Files 替代 File。新 API 更统一、更强大。


需要操作文件内容?下一节 Files 工具类是重点。

基于 VitePress 构建