files.writestring 是 java 11+ 引入的 nio.2 文本写入方法,一行代码完成文件写入与 utf-8 编码,默认自动创建文件但不创建父目录,需配合 files.createdirectories() 使用,支持追加、自定义编码等选项,并需处理 ioexception。

Files.writeString 是 Java 7 引入的 NIO.2 API 中非常简洁的文本写入方法,从 Java 11 开始正式支持(注意:Java 11+ 才有该方法),它能一行代码完成文件创建、编码指定和内容写入,避免手动处理 OutputStream 和字符编码问题。
确保使用 Java 11 或更高版本
该方法在 java.nio.file.Files 类中,仅存在于 Java 11 及以上。如果用低版本编译或运行,会报 NoSuchMethodError 或编译失败。
- 检查 JDK 版本:终端执行
java -version - IDE 中确认项目语言级别设为 11+(如 IntelliJ:File → Project Structure → Project SDK & Language Level)
基本用法:最简写入
只需提供路径、内容字符串,默认使用 UTF-8 编码并自动创建文件(含父目录):
Path path = Paths.get("output.txt");
Files.writeString(path, "Hello, world!");
这行代码会:
– 若文件不存在,自动创建
– 若父目录不存在,抛出 IOException(不会自动创建目录)
– 使用 UTF-8 编码写入
常用可选参数:控制行为与编码
通过传递 StandardOpenOption 和 Charset 精确控制写入方式:
-
追加内容:加上
StandardOpenOption.APPEND - 覆盖前清空(默认行为,无需显式指定)
-
指定编码:如
StandardCharsets.UTF_16或Charset.forName("GBK") -
自动创建父目录:需额外调用
Files.createDirectories(path.getParent())(writeString本身不创建目录)
示例(追加 + 指定 UTF-16):
Path path = Paths.get("log.txt");
Files.createDirectories(path.getParent()); // 先确保目录存在
Files.writeString(path, "New entry\n", StandardCharsets.UTF_16, StandardOpenOption.APPEND);
异常处理建议
该方法声明抛出 IOException,必须处理:
- 推荐用 try-with-resources 不适用(它不是资源型操作),直接 try-catch 即可
- 常见异常包括:磁盘满、无权限、路径含非法字符、父目录不存在等
- 简单场景可抛出或记录日志;生产环境建议捕获后给出明确提示
例如:
try {
Files.writeString(Paths.get("data.txt"), "content");
} catch (IOException e) {
System.err.println("写入失败:" + e.getMessage());
}
不复杂但容易忽略细节,用对了能省掉不少模板代码。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











