JavaTM Platform
Standard Ed. 6

java.io
类 PrintStream

java.lang.Object
  继承者 java.io.OutputStream
      继承者 java.io.FilterOutputStream
          继承者 java.io.PrintStream
所有已实现的接口:
Closeable, Flushable, Appendable
直接已知子类:
LogStream

public class PrintStream
extends FilterOutputStream
implements Appendable, Closeable

PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。它还提供其他两项功能。与其他输出流不同,PrintStream 永远不会抛出 IOException;而是,异常情况仅设置可通过 checkError 方法测试的内部标志。另外,为了自动刷新,可以创建一个 PrintStream;这意味着可在写入 byte 数组之后自动调用 flush 方法,可调用其中一个 println 方法,或写入一个换行符或字节 ('\n')。

PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类。

从以下版本开始:
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(Locale l, String format, Object... args)
          使用指定格式字符串和参数将格式化字符串写入此输出流中。
 PrintStream format(String format, Object... args)
          使用指定格式字符串和参数将格式化字符串写入此输出流中。
 void print(boolean b)
          打印 boolean 值。
 void print(char c)
          打印字符。
 void print(char[] s)
          打印字符数组。
 void print(double d)
          打印双精度浮点数。
 void print(float f)
          打印浮点数。
 void print(int i)
          打印整数。
 void print(long l)
          打印 long 整数。
 void print(Object obj)
          打印对象。
 void print(String s)
          打印字符串。
 PrintStream printf(Locale l, String format, Object... args)
          使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。
 PrintStream printf(String format, Object... args)
          使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。
 void println()
          通过写入行分隔符字符串终止当前行。
 void println(boolean x)
          打印 boolean 值,然后终止行。
 void println(char x)
          打印字符,然后终止该行。
 void println(char[] x)
          打印字符数组,然后终止该行。
 void println(double x)
          打印 double,然后终止该行。
 void println(float x)
          打印 float,然后终止该行。
 void println(int x)
          打印整数,然后终止该行。
 void println(long x)
          打印 long,然后终止该行。
 void println(Object x)
          打印 Object,然后终止该行。
 void println(String x)
          打印 String,然后终止该行。
protected  void setError()
          将该流的错误状态设置为 true
 void write(byte[] buf, int off, int len)
          将 len 字节从指定的初始偏移量为 off 的 byte 数组写入此流。
 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 - 将向其打印值和对象的输出流
另请参见:
PrintWriter.PrintWriter(java.io.OutputStream)

PrintStream

public PrintStream(OutputStream out,
                   boolean autoFlush)
创建新的打印流。

参数:
out - 将向其打印值和对象的输出流
autoFlush - boolean 变量;如果为 true,则每当写入 byte 数组、调用其中一个 println 方法或写入换行符或字节 ('\n') 时都会刷新输出缓冲区
另请参见:
PrintWriter.PrintWriter(java.io.OutputStream, boolean)

PrintStream

public PrintStream(OutputStream out,
                   boolean autoFlush,
                   String encoding)
            throws UnsupportedEncodingException
创建新的打印流。

参数:
out - 将向其打印值和对象的输出流
autoFlush - boolean 变量;如果为 true,则每当写入 byte 数组、调用其中一个 println 方法或写入换行符或字节 ('\n') 时都会刷新缓冲区
encoding - 受支持的字符编码的名称
抛出:
UnsupportedEncodingException - 如果不支持指定的编码
从以下版本开始:
1.4

PrintStream

public PrintStream(String fileName)
            throws FileNotFoundException
创建具有指定文件名称且不带自动行刷新的新打印流。此便捷构造方法创建必要的中间 OutputStreamWriter,后者将使用此 Java 虚拟机实例的默认 charset 进行字符编码。

参数:
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

public PrintStream(File file)
            throws FileNotFoundException
创建具有指定文件且不带自动行刷新的新打印流。此便捷构造方法创建必要的中间 OutputStreamWriter,后者将使用此 Java 虚拟机实例的默认 charset 进行字符编码。

参数:
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
方法详细信息

flush

public void flush()
刷新该流的缓冲。通过将所有缓冲的输出字节写入到底层输出流然后刷新该流的缓冲,完成此操作。

指定者:
接口 Flushable 中的 flush
覆盖:
FilterOutputStream 中的 flush
另请参见:
OutputStream.flush()

close

public void close()
关闭流。通过刷新流然后关闭底层输出流,完成此操作。

指定者:
接口 Closeable 中的 close
覆盖:
FilterOutputStream 中的 close
另请参见:
OutputStream.close()

checkError

public boolean checkError()
刷新流并检查其错误状态。当底层输出流抛出 IOException 而不是 InterruptedIOException 时,以及调用 setError 方法时,内部错误状态将被设置为 true。如果对底层输出流的操作抛出 InterruptedIOException,则通过调用以下方法或等效方法,PrintStream 将该异常转换回中断状态:
     Thread.currentThread().interrupt();
 

返回:
当且仅当此流遇到 IOException 而不是 InterruptedIOException 时,或已调用 setError 方法时,返回 true

setError

protected void setError()
将该流的错误状态设置为 true

在调用 clearError() 之前,此方法将导致 checkError() 的后续调用返回 true

从以下版本开始:
JDK1.1

clearError

protected void clearError()
清除此流的内部错误状态。

在另一个写入操作失败并调用 setError() 之前,此方法将导致 checkError() 的后续调用返回 false

从以下版本开始:
1.6

write

public void write(int b)
将指定的字节写入此流。如果字节为新行且启用了自动刷新,则调用 flush 方法。

要注意按给定写入字节;要写入将根据平台的默认字符编码转换的字符,请使用 print(char)println(char) 方法。

覆盖:
FilterOutputStream 中的 write
参数:
b - 要写入的字节
另请参见:
print(char), println(char)

write

public void write(byte[] buf,
                  int off,
                  int len)
len 字节从指定的初始偏移量为 off 的 byte 数组写入此流。如果启用自动刷新,则调用 flush 方法。

注意,要按给定写入字节;要写入将根据平台的默认字符编码转换的字符,请使用 print(char)println(char) 方法。

覆盖:
FilterOutputStream 中的 write
参数:
buf - byte 数组
off - 相对于开始写入字节处的偏移量
len - 要写入的字节数
另请参见:
FilterOutputStream.write(int)

print

public void print(boolean b)
打印 boolean 值。按照平台的默认字符编码将 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
另请参见:
Integer.toString(int)

print

public void print(long l)
打印 long 整数。按照平台的默认字符编码将 String.valueOf(long) 生成的字符串转换为字节,并完全以 write(int) 方法的方式写入这些字节。

参数:
l - 要打印的 long
另请参见:
Long.toString(long)

print

public void print(float f)
打印浮点数。按照平台的默认字符编码将 String.valueOf(float) 生成的字符串转换为字节,并完全以 write(int) 方法的方式写入这些字节。

参数:
f - 要打印的 float
另请参见:
Float.toString(float)

print

public void print(double d)
打印双精度浮点数。按照平台的默认字符编码将 String.valueOf(double) 生成的字符串转换为字节,并完全以 write(int) 方法的方式写入这些字节。

参数:
d - 要打印的 double
另请参见:
Double.toString(double)

print

public void print(char[] s)
打印字符数组。按照平台的默认字符编码将字符转换为字节,并完全以 write(int) 方法的方式写入这些字节。

参数:
s - 要打印的字符数组
抛出:
NullPointerException - 如果 snull

print

public void print(String s)
打印字符串。如果参数为 null,则打印字符串 "null"。否则,按照平台的默认字符编码将字符串的字符转换为字节,并完全以 write(int) 方法的方式写入这些字节。

参数:
s - 要打印的 String

print

public void print(Object obj)
打印对象。按照平台的默认字符串编码将 String.valueOf(Object) 方法生成的字符串转换为字节,并完全以 write(int) 方法的方式写入这些字节。

参数:
obj - 要打印的 Object
另请参见:
Object.toString()

println

public void println()
通过写入行分隔符字符串终止当前行。行分隔符字符串由系统属性 line.separator 定义,不一定是单个换行符 ('\n')。


println

public void println(boolean x)
打印 boolean 值,然后终止行。此方法的行为就像先调用 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)
打印 long,然后终止该行。此方法的行为就像先调用 print(long) 然后调用 println() 一样。

参数:
x - 要打印的 long

println

public void println(float x)
打印 float,然后终止该行。此方法的行为就像先调用 print(float) 然后调用 println() 一样。

参数:
x - 要打印的 float

println

public void println(double x)
打印 double,然后终止该行。此方法的行为就像先调用 print(double) 然后调用 println() 一样。

参数:
x - 要打印的 double

println

public void println(char[] x)
打印字符数组,然后终止该行。此方法的行为就像先调用 print(char[]) 然后调用 println() 一样。

参数:
x - 要打印的字符数组。

println

public void println(String x)
打印 String,然后终止该行。此方法的行为就像先调用 print(String) 然后调用 println() 一样。

参数:
x - 要打印的 String

println

public void println(Object x)
打印 Object,然后终止该行。此方法首先调用 String.valueOf(x) 获取打印对象的字符串值,然后的行为如同先调用 print(String) 再调用 println() 一样。

参数:
x - 要打印的 Object

printf

public PrintStream printf(String format,
                          Object... args)
使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。

调用此方法的 out.printf(format, args) 形式,行为与以下调用完全相同:

     out.format(format, args) 

参数:
format - 在格式字符串的语法中描述的格式字符串
args - 格式字符串中的格式说明符引用的参数。如果参数多于格式说明符,则忽略额外的参数。参数的数量是可变的,并且可以为零。参数的最大数量受到 Java Virtual Machine Specification 定义的 Java 数组的最大维数的限制。针对 null 参数的行为依赖于 conversion
返回:
此输出流
抛出:
IllegalFormatException - 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、对给定格式字符串而言不够充足的参数或其他非法条件。有关所有可能的格式错误的规范,请参阅 formatter 类规范的详细信息部分。
NullPointerException - 如果 formatnull
从以下版本开始:
1.5

printf

public PrintStream printf(Locale l,
                          String format,
                          Object... args)
使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。

调用此方法的 out.printf(l, format, args) 形式,行为与以下调用完全相同:

     out.format(l, format, args) 

参数:
l - 格式化过程中应用的 locale。如果 lnull,则不应用本地化。
format - 在格式字符串的语法中描述的格式字符串
args - 格式字符串中的格式说明符引用的参数。如果参数多于格式说明符,则忽略额外的参数。参数的数量是可变的,并且可以为零。参数的最大数量受到 Java Virtual Machine Specification 定义的 Java 数组的最大维数的限制。针对 null 参数的行为依赖于 conversion
返回:
此输出流
抛出:
IllegalFormatException - 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、对给定格式字符串而言不够充足的参数或其他非法条件。有关所有可能的格式错误的规范,请参阅 formatter 类规范的详细信息部分。
NullPointerException - 如果 formatnull
从以下版本开始:
1.5

format

public PrintStream format(String format,
                          Object... args)
使用指定格式字符串和参数将格式化字符串写入此输出流中。

始终使用的语言环境是由 Locale.getDefault() 返回的语言环境,不管以前在此对象上调用了其他什么样的格式化方法。

参数:
format - 在格式字符串的语法中描述的格式字符串
args - 格式字符串中的格式说明符引用的参数。如果参数多于格式说明符,则忽略额外的参数。参数的数量是可变的,并且可以为零。参数的最大数量受到 Java Virtual Machine Specification 定义的 Java 数组的最大维数的限制。针对 null 参数的行为依赖于 conversion
返回:
此输出流
抛出:
IllegalFormatException - 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、对给定格式字符串而言不够充足的参数或其他非法条件。有关所有可能的格式错误的规范,请参阅 formatter 类规范的详细信息部分。
NullPointerException - 如果 formatnull
从以下版本开始:
1.5

format

public PrintStream format(Locale l,
                          String format,
                          Object... args)
使用指定格式字符串和参数将格式化字符串写入此输出流中。

参数:
l - 格式化过程中应用的 locale。如果 lnull,则不应用本地化。
format - 在格式字符串的语法中描述的格式字符串
args - 格式字符串中的格式说明符引用的参数。如果参数多于格式说明符,则忽略额外的参数。参数的数量是可变的,并且可以为零。参数的最大数量受到 Java Virtual Machine Specification 定义的 Java 数组的最大维数的限制。针对 null 参数的行为依赖于 conversion
返回:
此输出流
抛出:
IllegalFormatException - 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、对给定格式字符串而言不够充足的参数或其他非法条件。有关所有可能的格式错误的规范,请参阅 formatter 类规范的详细信息部分。
NullPointerException - 如果 formatnull
从以下版本开始:
1.5

append

public PrintStream append(CharSequence csq)
将指定字符序列添加到此输出流。

此方法调用 out.append(csq) 的行为与调用下列方法完全相同:

     out.print(csq.toString()) 

可能不添加整个序列,也可能添加,具体取决于字符序列 csqtoString 规范。例如,调用一个字符缓冲区的 toString 方法将返回一个子序列,其内容取决于缓冲区的位置和限制。

指定者:
接口 Appendable 中的 append
参数:
csq - 要添加的字符序列。如果 csqnull,则向此输出流添加四个字符 "null"
返回:
此输出流
从以下版本开始:
1.5

append

public PrintStream append(CharSequence csq,
                          int start,
                          int end)
将指定字符序列的子序列添加到此输出流。

csq 不为 null 时,调用该方法的 out.append(csq、start、end) 形式,行为与以下调用完全相同:

     out.print(csq.subSequence(start, end).toString()) 

指定者:
接口 Appendable 中的 append
参数:
csq - 要添加子序列的字符序列。如果 csqnull,则添加这些字符,就好像 csq 包含四个字符 "null" 一样。
start - 子序列中第一个字符的索引
end - 子序列中最后一个字符后面的字符的索引
返回:
此输出流
抛出:
IndexOutOfBoundsException - 如果 startend 为负,而 start 大于 end 或者 end 大于 csq.length()
从以下版本开始:
1.5

append

public PrintStream append(char c)
将指定字符添加到此输出流。

调用此方法的 out.append(c) 形式,行为与以下调用完全相同:

     out.print(c) 

指定者:
接口 Appendable 中的 append
参数:
c - 要添加的 16 位字符
返回:
此输出流
从以下版本开始:
1.5

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策