在本教程中,我们将借助示例学习 Java PrintWriter
及其print()
和printf()
方法。
java.io
包的PrintWriter
类可用于以通常可读的形式(文本)写入输出数据。
它扩展了抽象类Writer
。
PrintWriter
的工作原理
与其他写入器不同,PrintWriter
将原始数据(int
,float
,char
等)转换为文本格式。 然后,它将格式化的数据写入写入器。
另外,PrintWriter
类不会引发任何输入/输出异常。 相反,我们需要使用checkError()
方法来查找其中的任何错误。
注意:PrintWriter
类还具有自动刷新功能。 这意味着,如果调用了println()
或printf()
方法之一,它将迫使写入器将所有数据写入目标。
创建一个PrintWriter
为了创建打印写入器,我们必须首先导入java.io.PrintWriter
包。 导入包后,就可以创建打印Writer
了。
1.使用其他写入器
// Creates a FileWriter
FileWriter file = new FileWriter("output.txt");
// Creates a PrintWriter
PrintWriter output = new PrintWriter(file, autoFlush);
这里,
- 我们已经创建了一个打印书写器,它将数据写入
FileWriter
表示的文件中 autoFlush
是一个可选参数,用于指定是否执行自动刷新
2.使用其他输出流
// Creates a FileOutputStream
FileOutputStream file = new FileOutputStream("output.txt");
// Creates a PrintWriter
PrintWriter output = new PrintWriter(file, autoFlush);
Here,
- 我们已经创建了一个打印书写器,它将数据写入
FileOutputStream
表示的文件中 autoFlush
是一个可选参数,用于指定是否执行自动刷新
3.使用文件名
// Creates a PrintWriter
PrintWriter output = new PrintWriter(String file, boolean autoFlush);
Here,
- 我们已经创建了一个打印
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()
- 将指定的数据打印到写入器println()
- 将数据以及结尾的换行符打印到写入器
例如,
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
与文件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);
Here,
"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
与文件output.txt
链接。
PrintWriter output = new PrintWriter("output.txt");
要将格式化的文本打印到文件中,我们使用了printf()
方法。
Here when we run the program, theoutput.txt
file is filled with the following content.
I am 25 years old.
PrintWriter
的其他方法
方法 | 描述 |
---|---|
close() |
关闭印刷PrintWriter |
checkError() |
检查写入器中是否有错误,并返回布尔结果 |
append() |
将指定的数据附加到写入器 |
要了解更多信息,请访问 Java PrintWriter
(Java 官方文档)。