原文: https://www.programiz.com/java-programming/printwriter

在本教程中,我们将借助示例学习 Java PrintWriter及其print()printf()方法。

java.io包的PrintWriter类可用于以通常可读的形式(文本)写入输出数据。

它扩展了抽象类Writer

Java `PrintWriter`类 - 图1


PrintWriter的工作原理

与其他写入器不同,PrintWriter将原始数据(intfloatchar等)转换为文本格式。 然后,它将格式化的数据写入写入器。

另外,PrintWriter类不会引发任何输入/输出异常。 相反,我们需要使用checkError()方法来查找其中的任何错误。

注意PrintWriter类还具有自动刷新功能。 这意味着,如果调用了println()printf()方法之一,它将迫使写入器将所有数据写入目标。


创建一个PrintWriter

为了创建打印写入器,我们必须首先导入java.io.PrintWriter包。 导入包后,就可以创建打印Writer了。

1.使用其他写入器

  1. // Creates a FileWriter
  2. FileWriter file = new FileWriter("output.txt");
  3. // Creates a PrintWriter
  4. PrintWriter output = new PrintWriter(file, autoFlush);

这里,

  • 我们已经创建了一个打印书写器,它将数据写入FileWriter表示的文件中
  • autoFlush是一个可选参数,用于指定是否执行自动刷新

2.使用其他输出流

  1. // Creates a FileOutputStream
  2. FileOutputStream file = new FileOutputStream("output.txt");
  3. // Creates a PrintWriter
  4. PrintWriter output = new PrintWriter(file, autoFlush);

Here,

  • 我们已经创建了一个打印书写器,它将数据写入FileOutputStream表示的文件中
  • autoFlush是一个可选参数,用于指定是否执行自动刷新

3.使用文件名

  1. // Creates a PrintWriter
  2. PrintWriter output = new PrintWriter(String file, boolean autoFlush);

Here,

  • 我们已经创建了一个打印Writer,它将数据写入指定的文件
  • autoFlush是一个可选的布尔参数,指定是执行自动刷新还是不执行

注意:在上述所有情况下,PrintWriter使用某种默认的字符编码将数据写入文件。 但是,我们也可以指定字符编码(UTF8UTF16)。

  1. // Creates a PrintWriter using some character encoding
  2. PrintWriter output = new PrintWriter(String file, boolean autoFlush, Charset cs);

在这里,我们使用Charset类指定字符编码。 要了解更多信息,请访问 Java Charset(Java 官方文档)


PrintWriter的方法

PrintWriter类提供了各种方法,使我们可以将数据打印到输出。

print()方法

  • print() - 将指定的数据打印到写入器
  • println() - 将数据以及结尾的换行符打印到写入器

例如,

  1. import java.io.PrintWriter;
  2. class Main {
  3. public static void main(String[] args) {
  4. String data = "This is a text inside the file.";
  5. try {
  6. PrintWriter output = new PrintWriter("output.txt");
  7. output.print(data);
  8. output.close();
  9. }
  10. catch(Exception e) {
  11. e.getStackTrace();
  12. }
  13. }
  14. }

在上面的示例中,我们创建了一个名为output的打印写入器。 该打印Writer与文件output.txt链接。

  1. PrintWriter output = new PrintWriter("output.txt");

要将数据打印到文件,我们使用了print()方法。

在这里,当我们运行程序时,output.txt文件填充了以下内容。

  1. This is a text inside the file.

printf()方法

printf()方法可用于打印格式化的字符串。 它包含 2 个参数:格式化的字符串和参数。 例如,

  1. printf("I am %d years old", 25);

Here,

  • "I am %d years old",是格式化字符串
  • %d是格式化字符串中的整数占位符
  • 25 是一个参数

格式化的字符串包括文本和数据。 并且,参数替换了格式化字符串中的数据。

因此,%d25 取代。


示例:使用PrintWriterprintf()方法

  1. import java.io.PrintWriter;
  2. class Main {
  3. public static void main(String[] args) {
  4. try {
  5. PrintWriter output = new PrintWriter("output.txt");
  6. int age = 25;
  7. output.printf("I am %d years old.", age);
  8. output.close();
  9. }
  10. catch(Exception e) {
  11. e.getStackTrace();
  12. }
  13. }
  14. }

在上面的示例中,我们创建了一个名为output的打印写入器。 打印Writer与文件output.txt链接。

  1. PrintWriter output = new PrintWriter("output.txt");

要将格式化的文本打印到文件中,我们使用了printf()方法。

Here when we run the program, theoutput.txtfile is filled with the following content.

  1. I am 25 years old.

PrintWriter的其他方法

方法 描述
close() 关闭印刷PrintWriter
checkError() 检查写入器中是否有错误,并返回布尔结果
append() 将指定的数据附加到写入器

要了解更多信息,请访问 Java PrintWriter(Java 官方文档)