Java PrintStream 类用法说明及实例

在本教程中,我们通过示例介绍 Java PrintStream 类以及 print() 和 printf() 方法。

在本教程中,我们通过示例介绍 Java PrintStream 类以及 print()printf() 方法。

java.io 包的 PrintStream 类通常用于将文本内容而不是字节写入输出流。

PrintStream 类扩展了抽象类 OutputStream

PrintStream 类是 Java OutputStream 的子类
Java PrintStream 类

PrintStream 的原理

与其他输出流不同, PrintStream 能够直接输出字符串内容,或格式化的字符串内容。

PrintStream 该类不会抛出任何输入/输出异常,我们需要使用 checkError() 方法来查找其中的任何错误。

注意PrintStream 类具有自动刷新功能,它会在以下几种情况强制将输出流中的数据写入目标:

  • 当流中写入换行符 \n
  • println() 方法被调用时
  • 当流中写入字节数组时

创建 PrintStream

PrintStream 提供了构造方法可以用来创建对象,主要有以下两种方式:

  1. 使用其他输出流

    OutputStream file = new FileOutputStream(String file);
    PrintStream output = new PrintStream(file, autoFlush);
    

    这里,

    • 我们创建了一个 PrintStream 对象,它与另一输出流关联起来
    • autoFlush 是一个可选的布尔参数,指定是否执行自动刷新
  2. 使用文件名

    PrintStream output = new PrintStream(String file, boolean autoFlush);
    

    参数说明:

    • file 目标输出文件
    • autoFlush 是一个可选的布尔参数,指定是否执行自动刷新

注意PrintStream 将数据写入文件都使用默认的字符编码。但是,我们也可以指定字符编码,比如: UTF8UTF16

PrintStream output = new PrintStream(String file, boolean autoFlush, Charset cs);

在这里,我们使用了 Charset 类来指定字符编码。

PrintStream 的方法

PrintStream 类提供各种方法以便打印数据的输出。

  • print() - 将指定的数据打印到输出流
  • println() - 将指定的数据结尾添加一个换行符再打印到输出流

示例:带有 System 类的 print() 方法

public class Main {
  public static void main(String[] args) {

    String data = "Hello World.";
    System.out.print(data);
  }
}

输出

Hello World.

在上面的例子中,我们没有直接创建打印流。注意下面这行代码:

System.out.print(data);

这里, System.out 返回一个 PrintStream 对象。

示例:使用 PrintStream 输出到文件

import java.io.PrintStream;

public class Main {
  public static void main(String[] args) {

    String data = "This is a text inside the file.";

    try {
      PrintStream output = new PrintStream("output.txt");

      output.print(data);
      output.close();
    } catch (Exception e) {
      e.getStackTrace();
    }
  }
}

在上面的例子中,我们用如下代码创建了一个名为 output 的打印流, 并且它与 output.txt 文件关联起来。

PrintStream output = new PrintStream("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

示例:使用 PrintStream 的 printf() 方法

import java.io.PrintStream;

public class Main {
  public static void main(String[] args) {

    try {
      PrintStream output = new PrintStream("output.txt");

      int age = 25;

      output.printf("I am %d years old.", age);
      output.close();
    } catch (Exception e) {
      e.getStackTrace();
    }
  }
}

在上面的例子中,我们通过下面的语句创建了一个名为 output 的打印流, 并且它与 output.txt 文件关联起来。

PrintStream output = new PrintStream("output.txt");

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

当我们成功运行程序后 ,output.txt 文件中内容如下:

I am 25 years old.

PrintStream 的其他方法

方法 说明
close() 关闭打印流
checkError() 检查流中是否存在错误并返回布尔结果
append() 将指定的数据附加到流中