Java PrintStream 类
- 数据转换和输出:
PrintStream
类用于将原始数据(如整数、字符)转换为文本格式并输出,而不抛出异常。 - 创建 PrintStream:可以通过与
FileOutputStream
链接或直接指定文件名来创建,支持自动刷新。 - 主要方法:提供
print()
、println()
和printf()
方法用于格式化输出文本,以及checkError()
方法来检查流中的错误。
java.io
包中的 PrintStream
类可以用来以通常可读的形式(文本)输出数据,而不是字节。
它继承了抽象类 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
都会使用某种默认字符编码将数据写入文件。然而,我们也可以指定字符编码(UTF8 或 UTF16)。
// 使用某种字符编码创建 PrintStream
PrintStream output = new PrintStream(String file, boolean autoFlush, Charset cs);
这里,我们使用了 Charset
类来指定字符编码。要了解更多,请访问 Java Charset(官方 Java 文档)。
PrintStream 的方法
PrintStream
类提供了多种方法,允许我们将数据打印到输出中。
print() 方法
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
类型的类变量
现在,由于 out
是 PrintStream
类型,我们可以使用它来调用 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 文档)。