java.io
包中的 PrintWriter
类可用于以一种普遍可读的格式(文本)写入输出数据。
它继承自抽象类Writer
。
PrintWriter 的工作原理
与其他 writer 不同,PrintWriter
将原始数据(int
、float
、char
等)转换为文本格式。然后将该格式化数据写入 writer。
此外,PrintWriter
类不抛出任何输入/输出异常。相反,我们需要使用 checkError()
方法来查找其中的任何错误。
注意:PrintWriter
类还具有自动刷新功能。这意味着如果在调用 println()
或 printf()
方法之一时,它会强制 writer 将所有数据写入目标。
创建 PrintWriter
要创建打印 writer,我们必须首先导入 java.io.PrintWriter
包。导入包后,我们可以这样创建打印 writer。
1. 使用其他 writer
// Creates a FileWriter
FileWriter file = new FileWriter("output.txt");
// Creates a PrintWriter
PrintWriter output = new PrintWriter(file, autoFlush);
这里,
- 我们创建了一个打印 writer,它将数据写入由
FileWriter
表示的文件。 - autoFlush 是一个可选参数,用于指定是否执行自动刷新。
2. 使用其他输出流
// Creates a FileOutputStream
FileOutputStream file = new FileOutputStream("output.txt");
// Creates a PrintWriter
PrintWriter output = new PrintWriter(file, autoFlush);
这里,
- 我们创建了一个打印 writer,它将数据写入由
FileOutputStream
表示的文件。 - autoFlush 是一个可选参数,用于指定是否执行自动刷新。
3. 使用文件名
// Creates a PrintWriter
PrintWriter output = new PrintWriter(String file, boolean autoFlush);
这里,
- 我们创建了一个打印 writer,它将数据写入指定的文件。
- autoFlush 是一个可选的布尔参数,用于指定是否执行自动刷新。
注意:在所有上述情况下,PrintWriter
都使用某种默认字符编码将数据写入文件。但是,我们也可以指定字符编码(UTF8 或 UTF16)。
// Creates a PrintWriter using some character encoding
PrintWriter output = new PrintWriter(String file, boolean autoFlush, Charset cs);
在这里,我们使用了 Charset 类来指定字符编码。要了解更多信息,请访问 Java Charset (官方 Java 文档)。
PrintWriter 的方法
PrintWriter
类提供了各种方法,允许我们将数据打印到输出。
print() 方法
print()
- 将指定数据打印到 writer。println()
- 将数据打印到 writer,并在末尾添加一个换行符。
例如,
import java.io.PrintWriter;
class Main {
public static void main(String[] args) {
String data = "This is a text inside the file.";
try {
PrintWriter output = new PrintWriter("output.txt");
output.print(data);
output.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
在上面的示例中,我们创建了一个名为 output 的打印 writer。此打印 writer 与文件 output.txt 关联。
PrintWriter output = new PrintWriter("output.txt");
为了将数据打印到文件,我们使用了 print()
方法。
当我们运行程序时,**output.txt**文件将被以下内容填充。
This is a text inside the file.
printf() 方法
printf()
方法可用于打印格式化字符串。它包含 2 个参数:格式化字符串和参数。例如,
printf("I am %d years old", 25);
这里,
- I am
%d
years old 是一个格式化字符串。 %d
是格式化字符串中的整数数据。- 25 是一个参数。
格式化字符串包含文本和数据。参数会替换格式化字符串中的数据。
因此,%d 被 25 替换。
示例:使用 PrintWriter 的 printf() 方法
import java.io.PrintWriter;
class Main {
public static void main(String[] args) {
try {
PrintWriter output = new PrintWriter("output.txt");
int age = 25;
output.printf("I am %d years old.", age);
output.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
在上面的示例中,我们创建了一个名为 output 的打印 writer。此打印 writer 与文件 output.txt 关联。
PrintWriter output = new PrintWriter("output.txt");
为了将格式化文本打印到文件,我们使用了 printf()
方法。
当我们运行程序时,**output.txt**文件将被以下内容填充。
I am 25 years old.
PrintWriter 的其他方法
方法 | 描述 |
---|---|
close() |
关闭打印 writer。 |
checkError() |
检查 writer 中是否存在错误,并返回布尔结果。 |
append() |
将指定数据追加到 writer。 |
要了解更多信息,请访问 Java PrintWriter (官方 Java 文档)。