printwriter简化文本输出,支持自动编码、缓冲、换行适配与格式化;推荐用file/string构造、优先调用println/printf、开启autoflush、写文件时务必close。

PrintWriter 能让文本输出更简洁、更灵活,关键是用对构造方法和常用方法。它屏蔽了底层字符编码和换行符差异,还支持自动刷新和格式化,比直接用 OutputStreamWriter + BufferedWriter 组合写起来清爽不少。
选对构造方法,省去编码和缓冲烦恼
多数场景下,推荐直接传 File 或 String(文件路径),PrintWriter 会自动处理编码(默认 UTF-8)和内部缓冲:
-
new PrintWriter("output.txt")—— 简单写文件,UTF-8 编码,覆盖模式 -
new PrintWriter(new FileWriter("log.txt", true))—— 追加写入(需显式用 FileWriter 控制追加) -
new PrintWriter(System.out)—— 包装标准输出,后续可用 print/println 统一风格
用 println 和 printf 替代手动拼接和换行
避免 write(str + "\n") 这类易错写法。PrintWriter 提供语义清晰的方法:
-
println("Hello")自动换行,比print("Hello\n")更安全(跨平台换行符适配) -
printf("Name: %s, Age: %d", name, age)支持格式化,比字符串拼接可读性强、不易出错 -
println()单独调用可输出空行,比print("\n")更直观
开启自动刷新,避免忘记 flush
构造时传 true 开启 autoFlush,每次 println、printf 或 format 后自动刷出缓冲区:
-
new PrintWriter("data.txt", true)—— 文件输出也支持 autoFlush -
new PrintWriter(System.out, true)—— 控制台输出实时可见,调试更方便 - 注意:autoFlush 对
print()不生效,只响应带换行或格式化的输出方法
别忘了关闭流(尤其写文件时)
PrintWriter 不是 try-with-resources 的“常客”,但写文件必须显式 close,否则内容可能滞留在缓冲区未落盘:
- 用 try-with-resources 最稳妥:
try (PrintWriter out = new PrintWriter("a.txt")) { ... } - 手动关闭也行:
out.close()(close 内部会自动 flush) - System.out 包装的 PrintWriter 一般不用关,但自定义文件流务必关
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











