PrintStream
java.lang.Object
|—java.io.OutputStream
|—|—java.io.FilterOutputStream
|—|—|—java.io.PrintStream
public class PrintStream
extends FilterOutputStream
implements Appendable, Closeable
PrintStream 向另一个输出流添加了功能,即能够方便地打印各种数据值的表示形式。 还提供了另外两个功能。 与其他输出流不同,PrintStream 从不抛出 IOException; 相反,异常情况只是设置一个内部标志,可以通过 checkError 方法进行测试。 可选地,可以创建一个 PrintStream 以便自动刷新; 这意味着在写入字节数组、调用 println 方法之一或写入换行符或字节 (‘\n’) 后会自动调用 flush 方法。
PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。 PrintWriter 类应该用于需要写入字符而不是字节的情况。
Since:
JDK1.0
字段摘要
从类 java.io.FilterOutputStream 继承的字段 |
---|
out |
构造函数摘要
构造函数 | 描述 |
---|---|
PrintStream(File file) | 使用指定的文件创建一个新的打印流,而不自动刷新行。 |
PrintStream(File file, String csn) | 使用指定的文件和字符集创建一个新的打印流,不自动刷新行。 |
PrintStream(OutputStream out) | 创建一个新的打印流。 |
PrintStream(OutputStream out, boolean autoFlush) | 创建一个新的打印流。 |
PrintStream(OutputStream out, boolean autoFlush, String encoding) | 创建一个新的打印流。 |
PrintStream(String fileName) | 使用指定的文件名创建一个新的打印流,不自动刷新行。 |
PrintStream(String fileName, String csn) | 使用指定的文件名和字符集创建一个新的打印流,不自动刷新行。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
PrintStream | append(char c) | 将指定的字符附加到此输出流。 |
PrintStream | append(CharSequence csq) | 将指定的字符序列附加到此输出流。 |
PrintStream | append(CharSequence csq, int start, int end) | 将指定字符序列的子序列附加到此输出流。 |
boolean | checkError() | 刷新流并检查其错误状态。 |
protected void | clearError() | 清除此流的内部错误状态。 |
void | close() | 关闭流。 |
void | flush() | 冲洗流。 |
PrintStream | format(String format, Object… args) | 使用指定的格式字符串和参数将格式化字符串写入此输出流。 |
PrintStream | format(Locale l, String format, Object… args) | 使用指定的格式字符串和参数将格式化字符串写入此输出流。 |
void | print(boolean b) | 打印一个布尔值。 |
void | print(char c) | 打印一个字符。 |
void | print(char[] s) | 打印一个字符数组。 |
void | print(double d) | 打印一个双精度浮点数。 |
void | print(float f) | 打印一个浮点数。 |
void | print(int i) | 打印一个整数。 |
void | print(long l) | 打印一个长整数。 |
void | print(Object obj) | 打印一个对象。 |
void | print(String s) | 打印一个字符串。 |
PrintStream | printf(String format, Object… args) | 使用指定格式字符串和参数将格式化字符串写入此输出流的便捷方法。 |
PrintStream | printf(Locale l, String format, Object… args) | 使用指定格式字符串和参数将格式化字符串写入此输出流的便捷方法。 |
void | println() | 通过写入行分隔符字符串来终止当前行。 |
void | println(boolean x) | 打印一个布尔值,然后终止该行。 |
void | println(char x) | 打印一个字符,然后终止该行。 |
void | println(char[] x) | 打印一个字符数组,然后终止该行。 |
void | println(double x) | 打印一个双精度然后终止该行。 |
void | println(float x) | 打印一个浮点数,然后终止该行。 |
void | println(int x) | 打印一个整数,然后终止该行。 |
void | println(long x) | 打印一个 long 然后终止该行。 |
void | println(Object x) | 打印一个对象,然后终止该行。 |
void | println(String x) | 打印一个字符串,然后终止该行。 |
protected void | setError() | 将流的错误状态设置为 true。 |
void | write(byte[] buf, int off, int len) | 将指定字节数组中的 len 个字节从 offset off 处开始写入此流。 |
void | write(int b) | 将指定的字节写入此流。 |
从类 java.io.FilterOutputStream 继承的方法 |
---|
write |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造函数详细信息
PrintStream
public PrintStream(OutputStream out)
创建一个新的打印流。 此流不会自动刷新。
参数:
参数名称 | 参数描述 |
---|---|
out | 将打印值和对象的输出流 |
PrintStream
public PrintStream(OutputStream out, boolean autoFlush)
创建一个新的打印流。
参数:
参数名称 | 参数描述 |
---|---|
out | 将打印值和对象的输出流 |
autoFlush | 一个布尔值; 如果为 true,则每当写入字节数组、调用 println 方法之一或写入换行符或字节 (‘\n’) 时,都会刷新输出缓冲区 |
PrintStream
public PrintStream(OutputStream out, boolean autoFlush, String encoding) throws UnsupportedEncodingException
创建一个新的打印流。
参数:
参数名称 | 参数描述 |
---|---|
out | 将打印值和对象的输出流 |
autoFlush | 一个布尔值; 如果为 true,则每当写入字节数组、调用 println 方法之一或写入换行符或字节 (‘\n’) 时,都会刷新输出缓冲区 |
encoding | 支持的字符编码的名称 |
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedEncodingException | 如果不支持命名编码 |
Since:
1.4
PrintStream
public PrintStream(String fileName) throws FileNotFoundException
使用指定的文件名创建一个新的打印流,不自动刷新行。 这个方便的构造函数创建了必要的中间 OutputStreamWriter,它将使用 Java 虚拟机的这个实例的默认字符集对字符进行编码。
参数:
参数名称 | 参数描述 |
---|---|
fileName | 用作此打印流目标的文件的名称。 如果文件存在,那么它将被截断为零大小; 否则,将创建一个新文件。 输出将被写入文件并被缓冲。 |
Throws:
Throw名称 | Throw描述 |
---|---|
FileNotFoundException | 如果给定的文件对象不表示现有的可写常规文件并且无法创建该名称的新常规文件,或者在打开或创建文件时发生其他错误 |
SecurityException | 如果存在安全管理器并且 SecurityManager#checkWrite 拒绝对文件的写访问权限 |
Since:
1.5
PrintStream
public PrintStream(String fileName, String csn) throws FileNotFoundException, UnsupportedEncodingException
使用指定的文件名和字符集创建一个新的打印流,不自动刷新行。 这个方便的构造函数创建了必要的中间 OutputStreamWriter,它将使用提供的字符集对字符进行编码。
参数:
参数名称 | 参数描述 |
---|---|
fileName | 用作此打印流目标的文件的名称。 如果文件存在,那么它将被截断为零大小; 否则,将创建一个新文件。 输出将被写入文件并被缓冲。 |
csn | 支持的字符集的名称 |
Throws:
Throw名称 | Throw描述 |
---|---|
FileNotFoundException | 如果给定的文件对象不表示现有的可写常规文件并且无法创建该名称的新常规文件,或者在打开或创建文件时发生其他错误 |
SecurityException | 如果存在安全管理器并且 SecurityManager#checkWrite 拒绝对文件的写访问权限 |
UnsupportedEncodingException | 如果不支持命名字符集 |
Since:
1.5
PrintStream
public PrintStream(File file) throws FileNotFoundException
使用指定的文件创建一个新的打印流,而不自动刷新行。 这个方便的构造函数创建了必要的中间 OutputStreamWriter,它将使用 Java 虚拟机的这个实例的默认字符集对字符进行编码。
参数:
参数名称 | 参数描述 |
---|---|
file | 用作此打印流目标的文件。 如果文件存在,那么它将被截断为零大小; 否则,将创建一个新文件。 输出将被写入文件并被缓冲。 |
Throws:
Throw名称 | Throw描述 |
---|---|
FileNotFoundException | 如果给定的文件对象不表示现有的可写常规文件并且无法创建该名称的新常规文件,或者在打开或创建文件时发生其他错误 |
SecurityException | 如果存在安全管理器并且 SecurityManager#checkWrite 拒绝对文件的写访问权限 |
Since:
1.5
PrintStream
public PrintStream(File file, String csn) throws FileNotFoundException, UnsupportedEncodingException
使用指定的文件和字符集创建一个新的打印流,不自动刷新行。 这个方便的构造函数创建了必要的中间 OutputStreamWriter,它将使用提供的字符集对字符进行编码。
参数:
参数名称 | 参数描述 |
---|---|
file | 用作此打印流目标的文件。 如果文件存在,那么它将被截断为零大小; 否则,将创建一个新文件。 输出将被写入文件并被缓冲。 |
csn | 支持的字符集的名称 |
Throws:
Throw名称 | Throw描述 |
---|---|
FileNotFoundException | 如果给定的文件对象不表示现有的可写常规文件并且无法创建该名称的新常规文件,或者在打开或创建文件时发生其他错误 |
SecurityException | 如果存在安全管理器并且 SecurityManager#checkWrite 拒绝对文件的写访问权限 |
UnsupportedEncodingException | 如果不支持命名字符集 |
Since:
1.5
方法详情
flush
public void flush()
冲洗流。 这是通过将任何缓冲的输出字节写入底层输出流然后刷新该流来完成的。
指定者:
在接口 Flushable 中刷新
覆盖:
类 FilterOutputStream 中的刷新
close
public void close()
关闭流。 这是通过刷新流然后关闭底层输出流来完成的。
指定者:
在接口 AutoCloseable 中关闭
指定者:
在接口Closeable中关闭
覆盖:
在类 FilterOutputStream 中关闭
checkError
public boolean checkError()
刷新流并检查其错误状态。 当底层输出流抛出除 InterruptedIOException 之外的 IOException 以及调用 setError 方法时,内部错误状态设置为 true。 如果对底层输出流的操作引发 InterruptedIOException,则 PrintStream 通过执行以下操作将异常转换回中断:
Thread.currentThread().interrupt();
返回:
当且仅当此流遇到除 InterruptedIOException 以外的 IOException 或已调用 setError 方法时才为 true
setError
protected void setError()
将流的错误状态设置为 true。
此方法将导致对 checkError() 的后续调用返回 true,直到调用 clearError()。
Since:
JDK1.1
clearError
protected void clearError()
清除此流的内部错误状态。
此方法将导致后续调用 checkError() 返回 false,直到另一个写入操作失败并调用 setError()。
Since:
1.6
write
public void write(int b)
将指定的字节写入此流。 如果字节是换行符并且启用了自动刷新,则将调用刷新方法。
请注意,字节是按给定的方式写入的; 要编写将根据平台的默认字符编码进行翻译的字符,请使用 print(char) 或 println(char) 方法。
覆盖:
写在类 FilterOutputStream
参数:
参数名称 | 参数描述 |
---|---|
b | 要写入的字节 |
write
public void write(byte[] buf, int off, int len)
将指定字节数组中的 len 个字节从 offset off 处开始写入此流。 如果启用了自动刷新,则将调用刷新方法。
请注意,字节将按给定的方式写入; 要编写将根据平台的默认字符编码进行翻译的字符,请使用 print(char) 或 println(char) 方法。
覆盖:
写在类 FilterOutputStream
参数:
参数名称 | 参数描述 |
---|---|
buf | 一个字节数组 |
off | 开始获取字节的偏移量 |
len | 要写入的字节数 |
public void print(boolean b)
打印一个布尔值。 String.valueOf(boolean) 生成的字符串按照平台默认的字符编码转换为字节,这些字节的写入方式与 write(int) 方法完全相同。
参数:
参数名称 | 参数描述 |
---|---|
b | 要打印的布尔值 |
public void print(char c)
打印一个字符。 字符根据平台默认的字符编码被翻译成一个或多个字节,这些字节完全按照 write(int) 方法的方式写入。
参数:
参数名称 | 参数描述 |
---|---|
c | 要打印的字符 |
public void print(int i)
打印一个整数。 String.valueOf(int) 生成的字符串按照平台默认的字符编码转换为字节,这些字节的写入方式与 write(int) 方法完全相同。
参数:
参数名称 | 参数描述 |
---|---|
i | 要打印的 int |
public void print(long l)
打印一个长整数。 String.valueOf(long) 生成的字符串按照平台默认的字符编码转换为字节,这些字节的写入方式与 write(int) 方法完全相同。
参数:
参数名称 | 参数描述 |
---|---|
l | 要打印的 long |
public void print(float f)
打印一个浮点数。 String.valueOf(float) 生成的字符串按照平台默认的字符编码转换为字节,这些字节的写入方式与 write(int) 方法完全相同。
参数:
参数名称 | 参数描述 |
---|---|
f | 要打印的浮点数 |
public void print(double d)
打印一个双精度浮点数。 String.valueOf(double) 生成的字符串按照平台默认的字符编码转换为字节,这些字节的写入方式与 write(int) 方法完全相同。
参数:
参数名称 | 参数描述 |
---|---|
d | 要打印的双精度 |
public void print(char[] s)
打印一个字符数组。 字符根据平台默认的字符编码转换为字节,这些字节完全按照 write(int) 方法的方式写入。
参数:
参数名称 | 参数描述 |
---|---|
s | 要打印的字符数组 |
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果 s 为空 |
public void print(String s)
打印一个字符串。 如果参数为空,则打印字符串“null”。 否则,字符串的字符会根据平台默认的字符编码转换为字节,并且这些字节完全按照 write(int) 方法的方式写入。
参数:
参数名称 | 参数描述 |
---|---|
s | 要打印的字符串 |
public void print(Object obj)
打印一个对象。 String.valueOf(Object) 方法生成的字符串按照平台默认的字符编码转换为字节,这些字节的写入方式与 write(int) 方法完全相同。
参数:
参数名称 | 参数描述 |
---|---|
obj | 要打印的对象 |
println
public void println()
通过写入行分隔符字符串来终止当前行。 行分隔符字符串由系统属性 line.separator 定义,不一定是单个换行符 (‘\n’)。
println
public void println(boolean x)
打印一个布尔值,然后终止该行。 这个方法的行为就像它调用 print(boolean) 然后 println()。
参数:
参数名称 | 参数描述 |
---|---|
x | 要打印的布尔值 |
println
public void println(char x)
打印一个字符,然后终止该行。 这个方法的行为就像它调用 print(char) 然后 println()。
参数:
参数名称 | 参数描述 |
---|---|
x | 要打印的字符。 |
println
public void println(int x)
打印一个整数,然后终止该行。 这个方法的行为就像它调用 print(int) 然后 println()。
参数:
参数名称 | 参数描述 |
---|---|
x | 要打印的 int。 |
println
public void println(long x)
打印一个 long 然后终止该行。 这个方法的行为就像它调用 print(long) 然后 println()。
参数:
参数名称 | 参数描述 |
---|---|
x | a 要打印的长度。 |
println
public void println(float x)
打印一个浮点数,然后终止该行。 这个方法的行为就像它调用 print(float) 然后 println()。
参数:
参数名称 | 参数描述 |
---|---|
x | 要打印的浮点数。 |
println
public void println(double x)
打印一个双精度然后终止该行。 这个方法的行为就像它调用 print(double) 然后 println()。
参数:
参数名称 | 参数描述 |
---|---|
x | 要打印的双精度。 |
println
public void println(char[] x)
打印一个字符数组,然后终止该行。 这个方法的行为就像它调用 [print(char]) 然后 println()。
参数:
参数名称 | 参数描述 |
---|---|
x | 要打印的字符数组。 |
println
public void println(String x)
打印一个字符串,然后终止该行。 这个方法的行为就好像它调用了 print(java.lang.String) 然后 println()。
参数:
参数名称 | 参数描述 |
---|---|
x | 要打印的字符串。 |
println
public void println(Object x)
打印一个对象,然后终止该行。 此方法首先调用 String.valueOf(x) 以获取打印对象的字符串值,然后表现得好像它调用 print(java.lang.String) 然后调用 println()。
参数:
参数名称 | 参数描述 |
---|---|
x | 要打印的对象。 |
printf
public PrintStream printf(String format, Object… args)
使用指定格式字符串和参数将格式化字符串写入此输出流的便捷方法。
形式为 out.printf(format, args) 的此方法的调用与调用的行为方式完全相同
out.format(format, args)
参数:
参数名称 | 参数描述 |
---|---|
format | 格式字符串语法中描述的格式字符串 |
args | 格式字符串中的格式说明符引用的参数。 如果参数多于格式说明符,则忽略多余的参数。 参数的数量是可变的,可能为零。 参数的最大数量受《Java™ 虚拟机规范》中定义的 Java 数组的最大维度限制。 空参数的行为取决于转换。 |
返回:
这个输出流
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalFormatException | 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。 |
NullPointerException | 如果 format 为空 |
Since:
1.5
printf
public PrintStream printf(Locale l, String format, Object… args)
使用指定格式字符串和参数将格式化字符串写入此输出流的便捷方法。
形式为 out.printf(l, format, args) 的此方法的调用与调用的行为方式完全相同
out.format(l, format, args)
参数:
参数名称 | 参数描述 |
---|---|
l | 在格式化期间应用的语言环境。 如果 l 为空,则不应用本地化。 |
format | 格式字符串语法中描述的格式字符串 |
args | 格式字符串中的格式说明符引用的参数。 如果参数多于格式说明符,则忽略多余的参数。 参数的数量是可变的,可能为零。 参数的最大数量受《Java™ 虚拟机规范》中定义的 Java 数组的最大维度限制。 空参数的行为取决于转换。 |
返回:
这个输出流
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalFormatException | 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。 |
NullPointerException | 如果格式为空 |
Since:
1.5
format
public PrintStream format(String format, Object… args)
使用指定的格式字符串和参数将格式化字符串写入此输出流。
始终使用的语言环境是由 Locale.getDefault() 返回的语言环境,无论之前对此对象是否调用过其他格式化方法。
参数:
参数名称 | 参数描述 |
---|---|
format | 格式字符串语法中描述的格式字符串 |
args | 格式字符串中的格式说明符引用的参数。 如果参数多于格式说明符,则忽略多余的参数。 参数的数量是可变的,可能为零。 参数的最大数量受《Java™ 虚拟机规范》中定义的 Java 数组的最大维度限制。 空参数的行为取决于转换。 |
返回:
这个输出流
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalFormatException | 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。 |
NullPointerException | 如果 format 为空 |
Since:
1.5
format
public PrintStream format(Locale l, String format, Object… args)
使用指定的格式字符串和参数将格式化字符串写入此输出流。
参数:
参数名称 | 参数描述 |
---|---|
l | 在格式化期间应用的语言环境。 如果 l 为空,则不应用本地化。 |
format | 格式字符串语法中描述的格式字符串 |
args | 格式字符串中的格式说明符引用的参数。 如果参数多于格式说明符,则忽略多余的参数。 参数的数量是可变的,可能为零。 参数的最大数量受《Java™ 虚拟机规范》中定义的 Java 数组的最大维度限制。 空参数的行为取决于转换。 |
返回:
这个输出流
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalFormatException | 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。 |
NullPointerException | 如果格式为空 |
Since:
1.5
append
public PrintStream append(CharSequence csq)
将指定的字符序列附加到此输出流。
形式为 out.append(csq) 的此方法的调用与调用的行为方式完全相同
out.print(csq.toString())
根据字符序列 csq 的 toString 规范,可能不会附加整个序列。 例如,调用字符缓冲区的 toString 方法将返回一个子序列,其内容取决于缓冲区的位置和限制。
指定者:
在接口 Appendable 中追加
参数:
参数名称 | 参数描述 |
---|---|
csq | 要追加的字符序列。 如果 csq 为 null,则将四个字符“null”附加到此输出流。 |
返回:
这个输出流
Since:
1.5
append
public PrintStream append(CharSequence csq, int start, int end)
将指定字符序列的子序列附加到此输出流。
当 csq 不为空时,以 out.append(csq, start, end) 形式调用此方法的行为与调用完全相同
out.print(csq.subSequence(start, end).toString())
指定者:
在接口 Appendable 中追加
参数:
参数名称 | 参数描述 |
---|---|
csq | 从中追加子序列的字符序列。 如果 csq 为 null,则将附加字符,就好像 csq 包含四个字符“null”。 |
start | 子序列中第一个字符的索引 |
end | 子序列中最后一个字符之后的字符的索引 |
返回:
这个输出流
Throws:
Throw名称 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果 start 或 end 为负数,则 start 大于 end,或者 end 大于 csq.length() |
Since:
1.5
append
public PrintStream append(char c)
将指定的字符附加到此输出流。
以 out.append(c) 形式调用此方法的行为与调用完全相同
out.print(c)
指定者:
在接口 Appendable 中追加
参数:
参数名称 | 参数描述 |
---|---|
c | 要附加的 16 位字符 |
返回:
这个输出流
Since:
1.5