掌握 Java PrintWriter:功能、方法与实战示例
掌握 Java PrintWriter
PrintWriter 位于 java.io,用于将字符数据写入文本文件或其他输出流。继承 Writer,提供便捷格式化方法。
与其他 writer 不同,PrintWriter 自动将基本类型(int、float、char 等)转为文本再写入。且不抛 IOException,可用 checkError() 检测错误。
自动刷新是关键特性:启用后,每次调用 println() 或 printf() 强制缓冲区刷入底层流。
PrintWriter 工作原理
PrintWriter 向底层 Writer 或 OutputStream 写格式化文本。构造器接受 autoFlush 标志,可选 Charset 指定编码。
创建 PrintWriter
导入类:
import java.io.PrintWriter;
1. 从现有 Writer
FileWriter file = new FileWriter("output.txt");
PrintWriter out = new PrintWriter(file, true); // autoFlush = true
2. 从 OutputStream
FileOutputStream fos = new FileOutputStream("output.txt");
PrintWriter out = new PrintWriter(fos, true);
3. 直接从文件名
PrintWriter out = new PrintWriter("output.txt", true);
4. 指定字符编码
import java.nio.charset.Charset;
PrintWriter out = new PrintWriter("output.txt", true, Charset.forName("UTF-8"));
用 Charset 确保文本按期望编码写入。
核心方法
print() 和 println()
写原始或带行终止符的文本:
print(obj)– 写obj字符串表示,不换行println(obj)– 写字符串并追加系统行分隔符
printf()
printf 系列支持 Java Formatter 语法。示例:
out.printf("I am %d years old.", 25);
其他实用方法
| 方法 | 描述 |
|---|---|
close() | 关闭流释放资源 |
checkError() | 发生写错误返回 true |
append(CharSequence) | 追加给定序列到 writer |
实战示例
完整可运行程序,用 printf() 写格式化文本到 output.txt:
import java.io.PrintWriter;
import java.io.FileWriter;
import java.io.IOException;
public class PrintWriterDemo {
public static void main(String[] args) {
try (PrintWriter out = new PrintWriter(new FileWriter("output.txt"), true)) {
int age = 25;
out.printf("I am %d years old.\n", age);
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行后创建 output.txt,内容:
I am 25 years old.
延伸阅读
官方规范见 Java PrintWriter API 及 Charset 文档。
java
- 深入理解 Java final 关键字:变量、方法与类的不可变性
- Java instanceof 运算符完全指南:用法、继承与接口检查
- 精通 Java 继承:核心概念、类型与实战示例
- 深入理解 Java 静态嵌套类:用法、差异与实战示例
- 精通 Java 匿名内部类:定义、语法与实战示例
- Java 单例模式详解:安全实现与使用指南
- 精通 Java 反射:运行时检查类、方法与字段
- 精通 Java ArrayList:操作、方法与最佳实践
- Java Stack 类全面指南:用法、核心方法与实战示例
- 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
- 掌握 Java 泛型:构建可复用、类型安全的代码
- 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除