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")); // truePath vs File
| 操作 | File | Path |
|---|---|---|
| 判断文件 | 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 工具类是重点。
