- 所有已实现的接口:
-
Closeable
,Flushable
,Appendable
,AutoCloseable
- 直接已知的子类:
-
LogStream
PrintStream
添加了对另一个输出流的功能,即方便地打印各种数据值的表示。还提供了另外两个功能。与其他输出流不同,PrintStream
永远不会抛出 IOException
;相反,异常情况只会设置一个内部标志,可以通过 checkError
方法进行测试。可选地,可以创建一个 PrintStream
,以便自动刷新;这意味着在写入字节数组、调用 println
方法之一或写入换行字符或字节('\n'
)后,将自动调用基础输出流的 flush
方法。
由 PrintStream
打印的所有字符都使用给定的编码或字符集转换为字节,如果未指定,则使用默认字符集。在需要写入字符而不是字节的情况下,应使用 PrintWriter
类。
此类始终使用字符集的默认替换字符串替换格式不正确和无法映射的字符序列。在需要对编码过程进行更多控制时,应使用 CharsetEncoder 类。
- 自:
- 1.0
- 参见:
-
Field Summary
Fields declared in class java.io.FilterOutputStream
out
-
Constructor Summary
ConstructorsConstructorDescriptionPrintStream
(File file) 使用指定的文件创建一个新的打印流,不自动刷新行。PrintStream
(File file, String csn) 使用指定的文件和字符集创建一个新的打印流,不自动刷新行。PrintStream
(File file, Charset charset) 使用指定的文件和字符集创建一个新的打印流,不自动刷新行。PrintStream
(OutputStream out) 使用指定的输出流创建一个新的打印流,不自动刷新行。PrintStream
(OutputStream out, boolean autoFlush) 使用指定的输出流和行刷新创建一个新的打印流。PrintStream
(OutputStream out, boolean autoFlush, String encoding) 使用指定的输出流、行刷新和字符编码创建一个新的打印流。PrintStream
(OutputStream out, boolean autoFlush, Charset charset) 使用指定的输出流、行刷新和字符集创建一个新的打印流。PrintStream
(String fileName) 使用指定的文件名创建一个新的打印流,不自动刷新行。PrintStream
(String fileName, String csn) 使用指定的文件名和字符集创建一个新的打印流,不自动刷新行。PrintStream
(String fileName, Charset charset) 使用指定的文件名和字符集创建一个新的打印流,不自动刷新行。 -
Method Summary
Modifier and TypeMethodDescriptionappend
(char c) 将指定的字符附加到此输出流。append
(CharSequence csq) 将指定的字符序列附加到此输出流。append
(CharSequence csq, int start, int end) 将指定字符序列的子序列附加到此输出流。charset()
返回此PrintStream
实例中使用的字符集。boolean
如果流未关闭,则刷新流并检查其错误状态。protected void
清除此流的错误状态。void
close()
关闭流。void
flush()
刷新流。使用指定的格式字符串和参数向此输出流写入格式化字符串。使用指定的格式字符串和参数向此输出流写入格式化字符串。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
打印对象。void
打印字符串。使用指定的格式字符串和参数向此输出流写入格式化字符串的便利方法。使用指定的格式字符串和参数向此输出流写入格式化字符串的便利方法。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) 打印长整数,然后终止行。void
打印对象,然后终止行。void
打印字符串,然后终止行。protected void
setError()
将流的错误状态设置为true
。void
write
(byte[] buf) 将指定的字节数组中的所有字节写入此流。void
write
(byte[] buf, int off, int len) 从指定的字节数组中写入len
字节,从偏移量off
开始写入此流。void
write
(int b) 将指定的字节写入此流。void
writeBytes
(byte[] buf) 将指定的字节数组中的所有字节写入此流。Methods declared in class java.io.OutputStream
nullOutputStream
-
Constructor Details
-
PrintStream
使用指定的输出流创建一个新的打印流,不自动刷新行。写入流的字符将使用默认字符集转换为字节,或者如果out
是PrintStream
,则使用打印流使用的字符集。- 参数:
-
out
- 将值和对象打印到的输出流 - 参见:
-
PrintStream
使用指定的输出流和行刷新创建一个新的打印流。写入流的字符将使用默认字符集转换为字节,或者如果out
是PrintStream
,则使用打印流使用的字符集。- 参数:
-
out
- 将值和对象打印到的输出流 -
autoFlush
- 是否在写入字节数组、调用println
方法之一或写入换行字符或字节('\n'
)后刷新输出缓冲区 - 参见:
-
PrintStream
public PrintStream(OutputStream out, boolean autoFlush, String encoding) throws UnsupportedEncodingException 使用指定的输出流、行刷新和字符编码创建一个新的打印流。- 参数:
-
out
- 将值和对象打印到的输出流 -
autoFlush
- 是否在写入字节数组、调用println
方法之一或写入换行字符或字节('\n'
)后刷新输出缓冲区 -
encoding
- 支持的字符编码的名称 - 抛出:
-
UnsupportedEncodingException
- 如果不支持指定的编码 - 自:
- 1.4
-
PrintStream
使用指定的输出流、行刷新和字符集创建一个新的打印流。此便利构造函数将创建必要的中间OutputStreamWriter
,该中间流将使用提供的字符集对字符进行编码。- 参数:
-
out
- 将值和对象打印到的输出流 -
autoFlush
- 是否在写入字节数组、调用println
方法之一或写入换行字符或字节('\n'
)后刷新输出缓冲区 -
charset
- 一个 charset - 自:
- 10
-
PrintStream
使用指定的文件名创建一个新的打印流,不自动刷新行。此便利构造函数将创建必要的中间OutputStreamWriter
,该中间流将使用此 Java 虚拟机实例的 默认字符集 对字符进行编码。- 参数:
-
fileName
- 用作此打印流目的地的文件的名称。如果文件存在,则将其截断为零大小;否则,将创建一个新文件。输出将写入文件并进行缓冲。 - 抛出:
-
FileNotFoundException
- 如果给定的文件对象不表示现有的可写入常规文件,且无法创建具有该名称的新常规文件,或者在打开或创建文件时发生其他错误 -
SecurityException
- 如果存在安全管理器并且checkWrite(fileName)
拒绝对文件的写访问 - 自:
- 1.5
- 参见:
-
PrintStream
public PrintStream(String fileName, String csn) throws FileNotFoundException, UnsupportedEncodingException 创建一个新的打印流,不自动刷新行,使用指定的文件名和字符集。这个便利构造函数创建必要的中间OutputStreamWriter
,它将使用提供的字符集对字符进行编码。- 参数:
-
fileName
- 用作此打印流目的地的文件名。如果文件存在,则将被截断为零大小;否则,将创建一个新文件。输出将写入文件并进行缓冲。 -
csn
- 支持的字符集的名称 - 抛出:
-
FileNotFoundException
- 如果给定的文件对象不表示现有的可写常规文件,且无法创建具有该名称的新常规文件,或者在打开或创建文件时发生其他错误 -
SecurityException
- 如果存在安全管理器且checkWrite(fileName)
拒绝对文件的写访问 -
UnsupportedEncodingException
- 如果不支持命名的字符集 - 自从:
- 1.5
-
PrintStream
创建一个新的打印流,不自动刷新行,使用指定的文件名和字符集。这个便利构造函数创建必要的中间OutputStreamWriter
,它将使用提供的字符集对字符进行编码。- 参数:
-
fileName
- 用作此打印流目的地的文件名。如果文件存在,则将被截断为零大小;否则,将创建一个新文件。输出将写入文件并进行缓冲。 -
charset
- 一个字符集 - 抛出:
-
IOException
- 如果在打开或创建文件时发生I/O错误 -
SecurityException
- 如果存在安全管理器且checkWrite(fileName)
拒绝对文件的写访问 - 自从:
- 10
-
PrintStream
创建一个新的打印流,不自动刷新行,使用指定的文件。这个便利构造函数创建必要的中间OutputStreamWriter
,它将使用此Java虚拟机实例的默认字符集对字符进行编码。- 参数:
-
file
- 用作此打印流目的地的文件。如果文件存在,则将被截断为零大小;否则,将创建一个新文件。输出将写入文件并进行缓冲。 - 抛出:
-
FileNotFoundException
- 如果给定的文件对象不表示现有的可写常规文件,且无法创建具有该名称的新常规文件,或者在打开或创建文件时发生其他错误 -
SecurityException
- 如果存在安全管理器且checkWrite(file.getPath())
拒绝对文件的写访问 - 自从:
- 1.5
- 参见:
-
PrintStream
public PrintStream(File file, String csn) throws FileNotFoundException, UnsupportedEncodingException 创建一个新的打印流,不自动刷新行,使用指定的文件和字符集。这个便利构造函数创建必要的中间OutputStreamWriter
,它将使用提供的字符集对字符进行编码。- 参数:
-
file
- 用作此打印流目的地的文件。如果文件存在,则将被截断为零大小;否则,将创建一个新文件。输出将写入文件并进行缓冲。 -
csn
- 支持的字符集的名称 - 抛出:
-
FileNotFoundException
- 如果给定的文件对象不表示现有的可写常规文件,且无法创建具有该名称的新常规文件,或者在打开或创建文件时发生其他错误 -
SecurityException
- 如果存在安全管理器且checkWrite(file.getPath())
拒绝对文件的写访问 -
UnsupportedEncodingException
- 如果不支持命名的字符集 - 自从:
- 1.5
-
PrintStream
创建一个新的打印流,不自动刷新行,使用指定的文件和字符集。这个便利构造函数创建必要的中间OutputStreamWriter
,它将使用提供的字符集对字符进行编码。- 参数:
-
file
- 用作此打印流目的地的文件。如果文件存在,则将被截断为零大小;否则,将创建一个新文件。输出将写入文件并进行缓冲。 -
charset
- 一个字符集 - 抛出:
-
IOException
- 如果在打开或创建文件时发生I/O错误 -
SecurityException
- 如果存在安全管理器且checkWrite(file.getPath())
拒绝对文件的写访问 - 自从:
- 10
-
-
Method Details
-
flush
public void flush()刷新流。这是通过将任何缓冲的输出字节写入底层输出流,然后刷新该流来完成的。- 指定者:
-
flush
在接口Flushable
中 - 覆盖:
-
flush
在类FilterOutputStream
中 - 参见:
-
close
public void close()关闭流。这是通过刷新流,然后关闭底层输出流来完成的。- 指定者:
-
close
在接口AutoCloseable
中 - 指定者:
-
close
在接口Closeable
中 - 覆盖:
-
close
在类FilterOutputStream
中 - 参见:
-
checkError
public boolean checkError()如果流未关闭,则刷新流并检查其错误状态。- 返回:
-
true
仅当此流遇到IOException
或调用setError
方法时
-
setError
protected void setError()将流的错误状态设置为true
。此方法将导致后续调用
checkError()
返回true
,直到调用clearError()
为止。- 自从:
- 1.1
-
clearError
protected void clearError()清除此流的错误状态。此方法将导致后续调用
checkError()
返回false
,直到另一个写操作失败并调用setError()
为止。- 自从:
- 1.6
-
write
public void write(int b) 将指定的字节写入此流。如果字节是换行符并且启用了自动刷新,则将在底层输出流上调用flush
方法。请注意,字节将按照给定的方式写入;要写入将根据默认字符集进行转换的字符,请使用
print(char)
或println(char)
方法。- 覆盖:
-
write
在类FilterOutputStream
中 - 参数:
-
b
- 要写入的字节 - 参见:
-
write
public void write(byte[] buf, int off, int len) 从指定的字节数组中的偏移量off
开始写入len
字节到此流。如果启用了自动刷新,则将在底层输出流上调用flush
方法。请注意,字节将按照给定的方式写入;要写入将根据默认字符集进行转换的字符,请使用
print(char)
或println(char)
方法。- 覆盖:
-
write
在类FilterOutputStream
- 参数:
-
buf
- 一个字节数组 -
off
- 开始取字节的偏移量 -
len
- 要写入的字节数 - 抛出:
-
IndexOutOfBoundsException
- 如果off
为负、len
为负或len
大于b.length - off
- 参见:
-
write
将指定字节数组中的所有字节写入此流。如果启用了自动刷新,则将在基础输出流上调用flush
方法。请注意,字节将按照给定的方式写入;要写入根据默认字符集进行转换的字符,请使用
print(char[])
或println(char[])
方法。- 覆盖:
-
write
在类FilterOutputStream
- API 注意:
-
尽管声明为抛出
IOException
,但此方法实际上从不这样做。相反,像此类覆盖的其他方法一样,它设置了一个内部标志,可以通过checkError()
方法进行测试。要写入一个字节数组而不必为IOException
编写catch
块,请使用writeBytes(buf)
或write(buf, 0, buf.length)
。 - 实现要求:
-
此方法等效于
this.write(buf, 0, buf.length)
。 - 参数:
-
buf
- 一个字节数组 - 抛出:
-
IOException
- 如果发生I/O错误。 - 自:
- 14
- 参见:
-
writeBytes
public void writeBytes(byte[] buf) 将指定字节数组中的所有字节写入此流。如果启用了自动刷新,则将调用flush
方法。请注意,字节将按照给定的方式写入;要写入根据默认字符集进行转换的字符,请使用
print(char[])
或println(char[])
方法。- 实现要求:
-
此方法等效于
this.write(buf, 0, buf.length)
。 - 参数:
-
buf
- 一个字节数组 - 自:
- 14
-
print
public void print(boolean b) 打印布尔值。由String.valueOf(boolean)
生成的字符串根据默认字符集转换为字节,并以与write(int)
方法完全相同的方式写入这些字节。- 参数:
-
b
- 要打印的boolean
- 参见:
-
print
public void print(char c) 打印字符。字符根据构造函数中给定的字符编码转换为一个或多个字节,如果未指定字符编码,则使用默认字符集。这些字节将以与write(int)
方法完全相同的方式写入。- 参数:
-
c
- 要打印的char
- 参见:
-
print
public void print(int i) 打印整数。由String.valueOf(int)
生成的字符串根据默认字符集转换为字节,并以与write(int)
方法完全相同的方式写入这些字节。- 参数:
-
i
- 要打印的int
- 参见:
-
print
public void print(long l) 打印长整数。由String.valueOf(long)
生成的字符串根据默认字符集转换为字节,并以与write(int)
方法完全相同的方式写入这些字节。- 参数:
-
l
- 要打印的long
- 参见:
-
print
public void print(float f) 打印浮点数。由String.valueOf(float)
生成的字符串根据默认字符集转换为字节,并以与write(int)
方法完全相同的方式写入这些字节。- 参数:
-
f
- 要打印的float
- 参见:
-
print
public void print(double d) 打印双精度浮点数。由String.valueOf(double)
生成的字符串根据默认字符集转换为字节,并以与write(int)
方法完全相同的方式写入这些字节。- 参数:
-
d
- 要打印的double
- 参见:
-
print
public void print(char[] s) 打印字符数组。字符根据构造函数中给定的字符编码转换为字节,如果未指定字符编码,则使用默认字符集。这些字节将以与write(int)
方法完全相同的方式写入。- 参数:
-
s
- 要打印的字符数组 - 抛出:
-
NullPointerException
- 如果s
为null
- 参见:
-
print
打印字符串。如果参数为null
,则打印字符串"null"
。否则,字符串的字符根据构造函数中给定的字符编码转换为字节,如果未指定字符编码,则使用默认字符集。这些字节将以与write(int)
方法完全相同的方式写入。- 参数:
-
s
- 要打印的String
- 参见:
-
print
打印对象。由String.valueOf(Object)
方法生成的字符串根据默认字符集转换为字节,并以与write(int)
方法完全相同的方式写入这些字节。- 参数:
-
obj
- 要打印的Object
- 参见:
-
println
public void println()通过写入行分隔符字符串终止当前行。行分隔符字符串由系统属性line.separator
定义,不一定是单个换行符('\n'
)。 -
println
public void println(boolean x) 打印布尔值,然后终止行。此方法的行为就像调用print(boolean)
,然后调用println()
一样。- 参数:
-
x
- 要打印的boolean
-
println
public void println(char x) 打印字符,然后终止行。此方法的行为就像调用print(char)
,然后调用println()
一样。- 参数:
-
x
- 要打印的char
-
println
public void println(int x) 打印整数,然后终止行。此方法的行为就像调用print(int)
,然后调用println()
一样。- 参数:
-
x
- 要打印的int
-
println
public void println(long x) 打印长整数,然后终止行。此方法的行为就像调用print(long)
,然后调用println()
一样。- 参数:
-
x
- 要打印的long
-
println
public void println(float x) 打印浮点数,然后终止行。此方法的行为就像调用print(float)
,然后调用println()
一样。- 参数:
-
x
- 要打印的float
。
-
println
public void println(double x) 打印一个双精度值,然后终止该行。此方法的行为就好像调用了print(double)
,然后调用了println()
。- 参数:
-
x
- 要打印的double
。
-
println
public void println(char[] x) 打印一个字符数组,然后终止该行。此方法的行为就好像调用了print(char[])
,然后调用了println()
。- 参数:
-
x
- 要打印的字符数组。
-
println
打印一个字符串,然后终止该行。此方法的行为就好像调用了print(String)
,然后调用了println()
。- 参数:
-
x
- 要打印的String
。
-
println
打印一个对象,然后终止该行。此方法首先调用String.valueOf(x)以获取要打印对象的字符串值,然后行为就好像调用了print(String)
,然后调用了println()
。- 参数:
-
x
- 要打印的Object
。
-
printf
使用指定的格式字符串和参数向此输出流写入格式化的字符串的便捷方法。out.printf(format, args)
形式调用此方法的行为与调用out.format(format, args)
- 参数:
-
format
- 如格式字符串语法中所述的格式字符串 -
args
- 格式字符串中格式说明符引用的参数。如果参数比格式说明符多,则额外的参数将被忽略。参数的数量是可变的,可以为零。参数的最大数量受Java数组的最大维度限制,由Java虚拟机规范定义。对于null
参数的行为取决于转换。 - 返回:
- 此输出流
- 抛出:
-
IllegalFormatException
- 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。有关所有可能的格式错误的规范,请参阅格式化程序类规范的详细信息部分。 -
NullPointerException
- 如果format
为null
- 自:
- 1.5
-
printf
使用指定的格式字符串和参数向此输出流写入格式化的字符串的便捷方法。out.printf(l, format, args)
形式调用此方法的行为与调用out.format(l, format, args)
- 参数:
-
l
- 在格式化期间应用的locale。如果l
为null
,则不应用任何本地化。 -
format
- 如格式字符串语法中所述的格式字符串 -
args
- 格式字符串中格式说明符引用的参数。如果参数比格式说明符多,则额外的参数将被忽略。参数的数量是可变的,可以为零。参数的最大数量受Java数组的最大维度限制,由Java虚拟机规范定义。对于null
参数的行为取决于转换。 - 返回:
- 此输出流
- 抛出:
-
IllegalFormatException
- 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。有关所有可能的格式错误的规范,请参阅格式化程序类规范的详细信息部分。 -
NullPointerException
- 如果format
为null
- 自:
- 1.5
-
format
使用指定的格式字符串和参数向此输出流写入格式化的字符串。Locale.getDefault(Locale.Category)
返回的区域设置,其中指定了FORMAT
类别,而不管此对象上之前调用其他格式化方法的任何情况。- 参数:
-
format
- 如格式字符串语法中所述的格式字符串 -
args
- 格式字符串中格式说明符引用的参数。如果参数比格式说明符多,则额外的参数将被忽略。参数的数量是可变的,可以为零。参数的最大数量受Java数组的最大维度限制,由Java虚拟机规范定义。对于null
参数的行为取决于转换。 - 返回:
- 此输出流
- 抛出:
-
IllegalFormatException
- 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。有关所有可能的格式错误的规范,请参阅格式化程序类规范的详细信息部分。 -
NullPointerException
- 如果format
为null
- 自:
- 1.5
-
format
使用指定的格式字符串和参数向此输出流写入格式化的字符串。- 参数:
-
l
- 在格式化期间应用的locale。如果l
为null
,则不应用任何本地化。 -
format
- 如格式字符串语法中所述的格式字符串 -
args
- 格式字符串中格式说明符引用的参数。如果参数比格式说明符多,则额外的参数将被忽略。参数的数量是可变的,可以为零。参数的最大数量受Java数组的最大维度限制,由Java虚拟机规范定义。对于null
参数的行为取决于转换。 - 返回:
- 此输出流
- 抛出:
-
IllegalFormatException
- 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。有关所有可能的格式错误的规范,请参阅格式化程序类规范的详细信息部分。 -
NullPointerException
- 如果format
为null
- 自:
- 1.5
-
append
将指定的字符序列附加到此输出流。out.append(csq)
形式调用此方法的行为与调用out.print(csq.toString())
csq
的toString
规范,可能不会附加整个序列。例如,调用字符缓冲区的toString
方法将返回一个内容取决于缓冲区的位置和限制的子序列。- 在接口中指定:
-
append
in interfaceAppendable
- 参数:
-
csq
- 要附加的字符序列。如果csq
为null
,则将四个字符"null"
附加到此输出流。 - 返回:
- 此输出流
- 自:
- 1.5
-
append
将指定字符序列的子序列附加到此输出流。csq
不为null
时,以out.append(csq, start, end)
形式调用此方法的行为与调用out.print(csq.subSequence(start, end).toString())
- 指定由:
-
append
在接口Appendable
- 参数:
-
csq
- 将附加子序列的字符序列。如果csq
为null
,则字符将被附加,就好像csq
包含四个字符"null"
一样。 -
start
- 子序列中第一个字符的索引 -
end
- 子序列中最后一个字符之后的字符的索引 - 返回:
- 此输出流
- 抛出:
-
IndexOutOfBoundsException
- 如果start
或end
为负,start
大于end
,或end
大于csq.length()
- 自:
- 1.5
-
append
将指定的字符附加到此输出流。以
out.append(c)
形式调用此方法的行为与调用方式完全相同out.print(c)
- 指定由:
-
append
在接口Appendable
- 参数:
-
c
- 要附加的16位字符 - 返回:
- 此输出流
- 自:
- 1.5
-
charset
返回此PrintStream
实例中使用的字符集。- 返回:
-
此
PrintStream
实例中使用的字符集 - 自:
- 18
-