java中向文件写入字符串推荐用files.write()(jdk7+)或bufferedwriter;前者简洁安全,默认utf-8并自动关资源,后者适合多次写、追加或格式控制,需注意编码统一、换行符处理及资源关闭。

在 Java 中向文件写入字符串,最常用且推荐的方式是使用 Files.write()(JDK 7+)或 BufferedWriter 配合 FileWriter(兼容老版本)。关键在于选择合适的方式、正确处理编码和异常。
用 Files.write() 直接写入(推荐,简洁安全)
这是现代 Java(JDK 7 起)最简洁、可靠的方式,自动处理资源关闭和编码,默认 UTF-8:
- 传入
Path对象(可用Paths.get("xxx.txt")创建) - 第二个参数是
byte[],可用String.getBytes(StandardCharsets.UTF_8)转换 - 可选添加
StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING
示例:
import java.nio.file.*;
import java.nio.charset.StandardCharsets;
String content = "Hello, 世界!";
try {
Files.write(Paths.get("output.txt"), content.getBytes(StandardCharsets.UTF_8));
} catch (IOException e) {
e.printStackTrace();
}
用 BufferedWriter 写入(适合多次写、追加、控制格式)
当需要逐行写、追加内容、或写入过程中做逻辑处理时更灵活:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 用
Files.newBufferedWriter()创建(推荐,自动指定编码) - 或用
new BufferedWriter(new OutputStreamWriter(new FileOutputStream(...), StandardCharsets.UTF_8)) - 调用
write()和newLine(),最后务必close()或用 try-with-resources
示例(带自动关闭):
import java.nio.file.*;
import java.nio.charset.StandardCharsets;
String content = "第一行\n第二行";
try (BufferedWriter writer = Files.newBufferedWriter(
Paths.get("output.txt"), StandardCharsets.UTF_8)) {
writer.write(content);
} catch (IOException e) {
e.printStackTrace();
}
注意编码与换行符
中文乱码几乎都源于编码不一致:
- 明确指定
StandardCharsets.UTF_8,避免依赖系统默认编码 -
Files.write()默认按字节写,不自动加换行;如需换行,字符串中要含"\n"或用BufferedWriter.newLine() - Windows 下换行符为
"\r\n",跨平台建议统一用"\n"或System.lineSeparator()
避免常见错误
这些坑新手容易踩:
- 直接用
FileWriter不指定编码 → 可能在 Windows 上用 GBK,导致中文乱码 - 忘记 try-with-resources 或手动 close → 文件句柄泄漏,内容可能未真正写入磁盘
- 用
Files.write()但没加TRUNCATE_EXISTING→ 默认覆盖整个文件,不是追加 - 追加写入要用
StandardOpenOption.APPEND(Files.write())或true参数(FileWriter(path, true))
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










