模块 java.base
 java.io

类 PrintStream

所有已实现的接口:
Closeable , Flushable , Appendable , AutoCloseable
已知子类:
LogStream

public class PrintStream extends FilterOutputStream implements Appendable , Closeable
PrintStream 向另一个输出流添加功能,即能够方便地打印各种数据值的表示形式。还提供了另外两个功能。与其他输出流不同,PrintStream 永远不会抛出 IOException;相反,异常情况只是设置一个内部标志,可以通过 checkError 方法进行测试。可选地,可以创建一个 PrintStream 以便自动刷新;这意味着在写入字节数组、调用 println 方法之一或写入换行符或字节 ('\n') 后,将自动调用底层输出流的 flush 方法。

PrintStream 打印的所有字符都使用给定的编码或字符集转换为字节,如果未指定,则使用默认字符集。 PrintWriter 类应该用于需要写入字符而不是字节的情况。

此类总是用字符集的默认替换字符串替换格式错误和不可映射的字符序列。当需要对编码过程进行更多控制时,应使用 CharsetEncoder 类。

自从:
1.0
参见:
  • 字段摘要

    在类 java.io.FilterOutputStream 中声明的字段

    out
  • 构造方法总结

    构造方法
    构造方法
    描述
    使用指定的文件创建一个新的打印流,没有自动行刷新。
    PrintStream(File file, String csn)
    使用指定的文件和字符集创建一个新的打印流,没有自动行刷新。
    PrintStream(File file, Charset charset)
    使用指定的文件和字符集创建一个新的打印流,没有自动行刷新。
    使用指定的 OutputStream 创建一个新的打印流,没有自动行刷新。
    PrintStream(OutputStream out, boolean autoFlush)
    使用指定的 OutputStream 和行刷新创建新的打印流。
    PrintStream(OutputStream out, boolean autoFlush, String encoding)
    使用指定的 OutputStream、行刷新和字符编码创建新的打印流。
    PrintStream(OutputStream out, boolean autoFlush, Charset charset)
    使用指定的 OutputStream、行刷新和字符集创建新的打印流。
    PrintStream(String fileName)
    使用指定的文件名创建一个新的打印流,没有自动行刷新。
    PrintStream(String fileName, String csn)
    使用指定的文件名和字符集创建一个新的打印流,没有自动行刷新。
    PrintStream(String fileName, Charset charset)
    使用指定的文件名和字符集创建一个新的打印流,没有自动行刷新。
  • 方法总结

    修饰符和类型
    方法
    描述
    append(char c)
    将指定的字符附加到此输出流。
    将指定的字符序列附加到此输出流。
    append(CharSequence csq, int start, int end)
    将指定字符序列的子序列附加到此输出流。
    返回此 PrintStream 实例中使用的字符集。
    boolean
    如果流未关闭则刷新流并检查其错误状态。
    protected void
    清除此流的错误状态。
    void
    关闭流。
    void
    冲洗流。
    format(String format, Object... args)
    使用指定的格式字符串和参数将格式化字符串写入此输出流。
    format(Locale l, 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)
    打印一个长整数。
    void
    print(Object obj)
    打印一个对象。
    void
    打印一个字符串。
    printf(String format, Object... args)
    使用指定的格式字符串和参数将格式化字符串写入此输出流的便捷方法。
    printf(Locale l, String format, Object... args)
    使用指定的格式字符串和参数将格式化字符串写入此输出流的便捷方法。
    void
    通过写入行分隔符字符串终止当前行。
    void
    println(boolean x)
    打印一个boolean,然后终止该行。
    void
    println(char x)
    打印一个字符,然后终止该行。
    void
    println(char[] x)
    打印一个字符数组,然后终止该行。
    void
    println(double x)
    打印一个 double 然后终止该行。
    void
    println(float x)
    打印一个浮点数,然后终止该行。
    void
    println(int x)
    打印一个整数,然后终止该行。
    void
    println(long x)
    打印一长串然后终止该行。
    void
    打印一个对象,然后终止该行。
    void
    打印一个字符串,然后终止该行。
    protected void
    将流的错误状态设置为 true
    void
    write(byte[] buf)
    将指定字节数组中的所有字节写入此流。
    void
    write(byte[] buf, int off, int len)
    从偏移量 off 开始的指定字节数组中将 len 字节写入此流。
    void
    write(int b)
    将指定字节写入此流。
    void
    writeBytes(byte[] buf)
    将指定字节数组中的所有字节写入此流。

    在类 java.io.OutputStream 中声明的方法

    nullOutputStream

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 构造方法详细信息

    • PrintStream

      public PrintStream(OutputStream  out)
      使用指定的 OutputStream 创建一个新的打印流,没有自动行刷新。写入流的字符使用默认字符集转换为字节,或者 outPrintStream ,打印流使用的字符集。
      参数:
      out - 将打印值和对象的输出流
      参见:
    • PrintStream

      public PrintStream(OutputStream  out, boolean autoFlush)
      使用指定的 OutputStream 和行刷新创建新的打印流。写入流的字符使用默认字符集转换为字节,或者 outPrintStream ,打印流使用的字符集。
      参数:
      out - 将打印值和对象的输出流
      autoFlush - 是否在写入字节数组、调用 println 方法之一或写入换行符或字节 ('\n') 时刷新输出缓冲区
      参见:
    • PrintStream

      public PrintStream(OutputStream  out, boolean autoFlush, String  encoding) throws UnsupportedEncodingException
      使用指定的 OutputStream、行刷新和字符编码创建新的打印流。
      参数:
      out - 将打印值和对象的输出流
      autoFlush - 是否在写入字节数组、调用 println 方法之一或写入换行符或字节 ('\n') 时刷新输出缓冲区
      encoding - 支持的名称 字符编码
      抛出:
      UnsupportedEncodingException - 如果不支持命名编码
      自从:
      1.4
    • PrintStream

      public PrintStream(OutputStream  out, boolean autoFlush, Charset  charset)
      使用指定的 OutputStream、行刷新和字符集创建新的打印流。这个方便的构造函数创建了必要的中间体 OutputStreamWriter ,它将使用提供的字符集对字符进行编码。
      参数:
      out - 将打印值和对象的输出流
      autoFlush - 是否在写入字节数组、调用 println 方法之一或写入换行符或字节 ('\n') 时刷新输出缓冲区
      charset - 一个 charset
      自从:
      10
    • PrintStream

      public PrintStream(String  fileName) throws FileNotFoundException
      使用指定的文件名创建一个新的打印流,没有自动行刷新。这个方便的构造函数创建了必要的中间体 OutputStreamWriter ,它将使用 默认字符集 为这个 Java 虚拟机实例编码字符。
      参数:
      fileName - 用作此打印流目标的文件名。如果文件存在,那么它将被截断为零大小;否则,将创建一个新文件。输出将被写入文件并被缓冲。
      抛出:
      FileNotFoundException - 如果给定的文件对象不表示现有的、可写的常规文件并且无法创建同名的新常规文件,或者在打开或创建文件时出现其他错误
      SecurityException - 如果存在安全管理器并且 checkWrite(fileName) 拒绝对文件的写访问
      自从:
      1.5
      参见:
    • PrintStream

      public PrintStream(String  fileName, String  csn) throws FileNotFoundException , UnsupportedEncodingException
      使用指定的文件名和字符集创建一个新的打印流,没有自动行刷新。这个方便的构造函数创建了必要的中间体 OutputStreamWriter ,它将使用提供的字符集对字符进行编码。
      参数:
      fileName - 用作此打印流目标的文件名。如果文件存在,那么它将被截断为零大小;否则,将创建一个新文件。输出将被写入文件并被缓冲。
      csn - 受支持的 charset 的名称
      抛出:
      FileNotFoundException - 如果给定的文件对象不表示现有的、可写的常规文件并且无法创建同名的新常规文件,或者在打开或创建文件时出现其他错误
      SecurityException - 如果存在安全管理器并且 checkWrite(fileName) 拒绝对文件的写访问
      UnsupportedEncodingException - 如果不支持指定的字符集
      自从:
      1.5
    • PrintStream

      public PrintStream(String  fileName, Charset  charset) throws IOException
      使用指定的文件名和字符集创建一个新的打印流,没有自动行刷新。这个方便的构造函数创建了必要的中间体 OutputStreamWriter ,它将使用提供的字符集对字符进行编码。
      参数:
      fileName - 用作此打印流目标的文件名。如果文件存在,那么它将被截断为零大小;否则,将创建一个新文件。输出将被写入文件并被缓冲。
      charset - 一个 charset
      抛出:
      IOException - 如果在打开或创建文件时发生 I/O 错误
      SecurityException - 如果存在安全管理器并且 checkWrite(fileName) 拒绝对文件的写访问
      自从:
      10
    • PrintStream

      public PrintStream(File  file) throws FileNotFoundException
      使用指定的文件创建一个新的打印流,没有自动行刷新。这个方便的构造函数创建了必要的中间体 OutputStreamWriter ,它将使用 默认字符集 为这个 Java 虚拟机实例编码字符。
      参数:
      file - 用作此打印流目标的文件。如果文件存在,那么它将被截断为零大小;否则,将创建一个新文件。输出将被写入文件并被缓冲。
      抛出:
      FileNotFoundException - 如果给定的文件对象不表示现有的、可写的常规文件并且无法创建同名的新常规文件,或者在打开或创建文件时出现其他错误
      SecurityException - 如果存在安全管理器并且 checkWrite(file.getPath()) 拒绝对文件的写访问
      自从:
      1.5
      参见:
    • PrintStream

      public PrintStream(File  file, String  csn) throws FileNotFoundException , UnsupportedEncodingException
      使用指定的文件和字符集创建一个新的打印流,没有自动行刷新。这个方便的构造函数创建了必要的中间体 OutputStreamWriter ,它将使用提供的字符集对字符进行编码。
      参数:
      file - 用作此打印流目标的文件。如果文件存在,那么它将被截断为零大小;否则,将创建一个新文件。输出将被写入文件并被缓冲。
      csn - 受支持的 charset 的名称
      抛出:
      FileNotFoundException - 如果给定的文件对象不表示现有的、可写的常规文件并且无法创建同名的新常规文件,或者在打开或创建文件时出现其他错误
      SecurityException - 如果存在安全管理器并且 checkWrite(file.getPath()) 拒绝对文件的写访问
      UnsupportedEncodingException - 如果不支持指定的字符集
      自从:
      1.5
    • PrintStream

      public PrintStream(File  file, Charset  charset) throws IOException
      使用指定的文件和字符集创建一个新的打印流,没有自动行刷新。这个方便的构造函数创建了必要的中间体 OutputStreamWriter ,它将使用提供的字符集对字符进行编码。
      参数:
      file - 用作此打印流目标的文件。如果文件存在,那么它将被截断为零大小;否则,将创建一个新文件。输出将被写入文件并被缓冲。
      charset - 一个 charset
      抛出:
      IOException - 如果在打开或创建文件时发生 I/O 错误
      SecurityException - 如果存在安全管理器并且 checkWrite(file.getPath()) 拒绝对文件的写访问
      自从:
      10
  • 方法详情

    • 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

      public void write(byte[] buf) throws IOException
      将指定字节数组中的所有字节写入此流。如果启用自动刷新,则将在底层输出流上调用 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)
      打印一个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
      参见:
    • 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 - 如果 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
      参见:
    • 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)
      打印一长串然后终止该行。此方法的行为就像它调用 print(long) 然后调用 println() 一样。
      参数:
      x - a 要打印的 long
    • println

      public void println(float x)
      打印一个浮点数,然后终止该行。此方法的行为就像它调用 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)
      打印一个字符串,然后终止该行。此方法的行为就像它调用 print(String) 然后调用 println() 一样。
      参数:
      x - 要打印的 String
    • println

      public void println(Object  x)
      打印一个对象,然后终止该行。此方法首先调用 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 数组的最大维度,如定义的那样Java 虚拟机规范null 参数的行为取决于 转换
      返回:
      这个输出流
      抛出:
      IllegalFormatException - 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。有关所有可能的格式错误的规范,请参阅格式化程序类规范的细节部分。
      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 数组的最大维度,如定义的那样Java 虚拟机规范null 参数的行为取决于 转换
      返回:
      这个输出流
      抛出:
      IllegalFormatException - 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。有关所有可能的格式错误的规范,请参阅格式化程序类规范的细节部分。
      NullPointerException - 如果 formatnull
      自从:
      1.5
    • format

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

      始终使用的locale是 Locale.getDefault(Locale.Category) 返回的locale,指定了 FORMAT 类别,而不管之前对该对象的其他格式化方法的任何调用。

      参数:
      format - 格式字符串,如 格式化字符串语法 中所述
      args - 格式字符串中格式说明符引用的参数。如果参数多于格式说明符,则忽略多余的参数。参数的数量是可变的,可以为零。参数的最大数量受限于 Java 数组的最大维度,如定义的那样Java 虚拟机规范null 参数的行为取决于 转换
      返回:
      这个输出流
      抛出:
      IllegalFormatException - 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。有关所有可能的格式错误的规范,请参阅格式化程序类规范的细节部分。
      NullPointerException - 如果 formatnull
      自从:
      1.5
    • format

      public PrintStream  format(Locale  l, String  format, Object ... args)
      使用指定的格式字符串和参数将格式化字符串写入此输出流。
      参数:
      l - 在格式化期间应用的 locale。如果 lnull 则不应用本地化。
      format - 格式字符串,如 格式化字符串语法 中所述
      args - 格式字符串中格式说明符引用的参数。如果参数多于格式说明符,则忽略多余的参数。参数的数量是可变的,可以为零。参数的最大数量受限于 Java 数组的最大维度,如定义的那样Java 虚拟机规范null 参数的行为取决于 转换
      返回:
      这个输出流
      抛出:
      IllegalFormatException - 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。有关所有可能的格式错误的规范,请参阅格式化程序类规范的细节部分。
      NullPointerException - 如果 formatnull
      自从:
      1.5
    • append

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

      out.append(csq) 形式的方法的调用与调用的行为完全相同

      
         out.print(csq.toString())
        

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

      指定者:
      append 在接口 Appendable
      参数:
      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())
        
      指定者:
      append 在接口 Appendable
      参数:
      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)
        
      指定者:
      append 在接口 Appendable
      参数:
      c - 要追加的 16 位字符
      返回:
      这个输出流
      自从:
      1.5
    • charset

      public Charset  charset()
      返回此 PrintStream 实例中使用的字符集。
      返回:
      PrintStream 实例中使用的字符集
      自从:
      18