跳到主要内容

Java PrintStream 类

提示
  1. 数据转换和输出PrintStream 类用于将原始数据(如整数、字符)转换为文本格式并输出,而不抛出异常。
  2. 创建 PrintStream:可以通过与 FileOutputStream 链接或直接指定文件名来创建,支持自动刷新。
  3. 主要方法:提供 print()println()printf() 方法用于格式化输出文本,以及 checkError() 方法来检查流中的错误。

java.io 包中的 PrintStream 类可以用来以通常可读的形式(文本)输出数据,而不是字节。

它继承了抽象类 OutputStream

PrintStream 类是 Java OutputStream 的一个子类。

PrintStream 的工作原理

与其他输出流不同,PrintStream 将原始数据(整数、字符)转换为文本格式,而不是字节。然后,它将格式化后的数据写入输出流。

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

注意PrintStream 类还具有自动刷新的特性。这意味着在以下条件之一下,它会强制输出流将所有数据写入目的地:

  • 如果在打印流中写入换行符 \n
  • 如果调用了 println() 方法
  • 如果在打印流中写入字节数组

创建 PrintStream

要创建 PrintStream,我们首先必须导入 java.io.PrintStream 包。一旦我们导入了包,以下是我们如何创建打印流的方法。

1. 使用其他输出流

// 创建 FileOutputStream
FileOutputStream file = new FileOutputStream(String file);

// 创建 PrintStream
PrintStream output = new PrintStream(file, autoFlush);

这里,

  • 我们创建了一个打印流,它会将格式化数据写入由 FileOutputStream 表示的文件
  • autoFlush 是一个可选的布尔参数,指定是否执行自动刷新

2. 使用文件名

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

这里,

  • 我们创建了一个打印流,它会将格式化数据写入指定的文件
  • autoFlush 是一个可选的布尔参数,指定是否执行自动刷新

注意:在这两种情况下,PrintStream 都会使用某种默认字符编码将数据写入文件。然而,我们也可以指定字符编码(UTF8UTF16)。

// 使用某种字符编码创建 PrintStream
PrintStream output = new PrintStream(String file, boolean autoFlush, Charset cs);

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

PrintStream 的方法

PrintStream 类提供了多种方法,允许我们将数据打印到输出中。

  • print() - 将指定数据打印到输出流
  • println() - 将数据与最后一个新行字符一起打印到输出流

示例:System 类的 print() 方法

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

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

输出

Hello World.

在上面的例子中,我们没有创建打印流。然而,我们可以使用 PrintStream 类的 print() 方法。

你可能想知道这是如何实现的。让我来解释一下这里发生的情况。

注意这一行,

System.out.print(data);

这里,

  • System 是一个最终类,负责执行标准输入/输出操作
  • out 是在 System 类中声明的 PrintStream 类型的类变量

现在,由于 outPrintStream 类型,我们可以使用它来调用 PrintStream 类的所有方法。

示例:PrintStream 类的 print() 方法

import java.io.PrintStream;

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

String data = "这是文件中的文本。";

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 文件中填充了以下内容。

这是文件中的文本。

printf() 方法

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

printf("我今年 %d 岁", 25);

这里,

  • 我今年 %d 岁 是一个格式化的字符串
  • %d 是格式化字符串中的整数数据
  • 25 是一个参数

格式化字符串包括文本和数据。参数则替换格式化字符串中的数据。

因此 %d 被替换为 25

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

import java.io.PrintStream;

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

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

int age = 25;

output.printf("我今年 %d 岁。", age);
output.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}

在上面的例子中,我们创建了一个名为 output 的打印流。这个打印流与文件 output.txt 相连。

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

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

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

我今年 25 岁。

PrintStream 的其他方法

方法描述
close()关闭打印流
checkError()检查流中是否有错误,并返回布尔值结果
append()将指定数据追加到流中

要了解更多,访问 Java PrintStream(官方 Java 文档)