java创建写入文件推荐用nio.2的files类,如files.writestring()自动建目录并指定utf-8编码;追加写入宜用try-with-resources的bufferedwriter;须先files.createdirectories()确保父目录存在,避免nosuchfileexception。

Java 中创建和写入文件主要有两种常用方式:使用 java.io(传统 IO)和 java.nio.file(NIO.2,推荐)。核心要点是——先确保路径合法、目录存在,再选择合适的方式写入内容。
用 Files 类快速创建并写入(推荐)
这是最简洁安全的方式,适合一次性写入字符串或字节数组:
- 自动创建父目录(无需手动 mkdir)
- 支持字符编码指定(如 UTF-8)
- 一行代码完成创建 + 写入,异常自动处理(抛出 IOException)
示例:
import java.nio.file.*;
import java.nio.charset.StandardCharsets;
// 创建文件并写入文本(覆盖写入)
Files.write(Paths.get("data.txt"), "Hello, Java!".getBytes(StandardCharsets.UTF_8));
// 或更语义化的方式(推荐)
Files.writeString(Paths.get("log.txt"), "Start processing...", StandardCharsets.UTF_8);
用 FileWriter / BufferedWriter 追加写入
适合多次写入、日志记录等场景,支持追加模式:
- FileWriter 默认使用平台默认编码,建议用 OutputStreamWriter 显式指定 UTF-8
- BufferedWriter 提供缓冲,性能更好,且有 newLine() 方法换行
- 务必调用 close() 或使用 try-with-resources 自动关闭
示例:
try (BufferedWriter writer = Files.newBufferedWriter(
Paths.get("output.txt"), StandardCharsets.UTF_8,
StandardOpenOption.CREATE, StandardOpenOption.APPEND)) {
writer.write("Line 1");
writer.newLine();
writer.write("Line 2");
} catch (IOException e) {
e.printStackTrace();
}
注意路径与目录创建
如果目标路径含多级目录(如 "logs/2024/app.log"),需提前创建父目录:
- Files.createDirectories() 会递归创建所有不存在的父目录
- Files.createFile() 只创建文件本身,不建父目录,若父目录不存在会报 NoSuchFileException
安全写法:
Path path = Paths.get("logs/2024/app.log");
Files.createDirectories(path.getParent()); // 先建好 logs/2024
Files.createFile(path); // 再建文件
Files.writeString(path, "Log entry");
避免常见错误
- 不要用 File.createNewFile() 后再用 FileWriter —— 容易因编码/换行/关闭问题导致乱码或内容丢失
- 不要忽略 IOException:即使只是写入本地文件,磁盘满、权限不足、路径非法都可能失败
- 不要在循环中频繁 new FileWriter(未追加模式)—— 会反复覆盖,只保留最后一次写入
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











