Path和Files读写文件的核心是:先用Path.of()或Paths.get()构造路径,再用Files静态方法一步操作;自动处理编码、缓冲和资源关闭,比传统IO更简洁。

直接用 Path 和 Files 读写文件,核心就两点:先用 Paths.get() 构造路径,再用 Files 的静态方法一步完成操作。它自动处理编码、缓冲、资源关闭,比传统 FileInputStream + BufferedReader 简洁得多。
快速创建和获取 Path 对象
Path 是路径的抽象表示,不涉及实际 I/O。推荐用 Path.of()(Java 11+,官方推荐)或 Paths.get():
- 相对路径:
Path p = Path.of("data", "config.txt");→ 自动拼接为data/config.txt(跨平台) - 绝对路径:
Path p = Path.of("/home/user/log.txt");(Unix)或Path.of("C:\temp\notes.txt")(Windows) - 转绝对路径:
p.toAbsolutePath(),适合不确定当前工作目录时使用 - 判断类型:
p.isAbsolute()、p.getFileName()、p.getParent()可快速提取结构信息
一行代码读取文本内容
用 Files.readString() 直接加载整个文本文件(推荐小到中等文件):
String content = Files.readString(Path.of("readme.md"), StandardCharsets.UTF_8);- 无需 try-with-resources,无流对象管理,编码明确,失败直接抛
IOException - 若需逐行处理大文件,改用
Files.lines(path).forEach(...)(返回Stream)
一行代码写入文本内容
Files.writeString() 覆盖写入,支持常用打开选项:
Files.writeString(Path.of("output.txt"), "Hello NIO", StandardCharsets.UTF_8, CREATE, WRITE, TRUNCATE_EXISTING);- 常用组合:
CREATE(不存在则建)、WRITE(可写)、TRUNCATE_EXISTING(清空重写)、APPEND(追加) - 注意:默认不创建父目录,写入前建议先调用
Files.createDirectories(p.getParent())
读写字节与基础文件操作
对二进制数据或需要更底层控制时:
- 读全部字节:
byte[] data = Files.readAllBytes(Path.of("image.png")); - 写全部字节:
Files.write(Path.of("copy.png"), data, CREATE, WRITE); - 复制文件:
Files.copy(src, dst, REPLACE_EXISTING);(支持跨文件系统) - 移动/重命名:
Files.move(src, dst, ATOMIC_MOVE, REPLACE_EXISTING); - 创建目录:
Files.createDirectories(Path.of("a/b/c"));(自动建多级)
不复杂但容易忽略:所有 Files 方法都基于异常驱动,操作前不用手动检查文件是否存在;但像 createDirectories 或 write 这类修改操作,仍需捕获 IOException 处理权限、磁盘满等实际问题。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











