Java PrintStream 类用法说明及实例
在本教程中,我们通过示例介绍 Java PrintStream 类以及 print() 和 printf() 方法。
在本教程中,我们通过示例介绍 Java PrintStream 类以及 print()
和 printf()
方法。
java.io
包的 PrintStream
类通常用于将文本内容而不是字节写入输出流。
PrintStream
类扩展了抽象类 OutputStream
。
PrintStream 的原理
与其他输出流不同, PrintStream
能够直接输出字符串内容,或格式化的字符串内容。
PrintStream
该类不会抛出任何输入/输出异常,我们需要使用 checkError()
方法来查找其中的任何错误。
注意: PrintStream
类具有自动刷新功能,它会在以下几种情况强制将输出流中的数据写入目标:
- 当流中写入换行符
\n
时 - 当
println()
方法被调用时 - 当流中写入字节数组时
创建 PrintStream
PrintStream
提供了构造方法可以用来创建对象,主要有以下两种方式:
-
使用其他输出流
OutputStream file = new FileOutputStream(String file); PrintStream output = new PrintStream(file, autoFlush);
这里,
- 我们创建了一个 PrintStream 对象,它与另一输出流关联起来
autoFlush
是一个可选的布尔参数,指定是否执行自动刷新
-
使用文件名
PrintStream output = new PrintStream(String file, boolean autoFlush);
参数说明:
file
目标输出文件autoFlush
是一个可选的布尔参数,指定是否执行自动刷新
注意: PrintStream
将数据写入文件都使用默认的字符编码。但是,我们也可以指定字符编码,比如: UTF8
或 UTF16
。
PrintStream output = new PrintStream(String file, boolean autoFlush, Charset cs);
在这里,我们使用了 Charset
类来指定字符编码。
PrintStream 的方法
PrintStream
类提供各种方法以便打印数据的输出。
print() 方法
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() |
将指定的数据附加到流中 |