Module java.base
Package java.io

Class 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
参见:
  • Field Summary

    Fields declared in class java.io.FilterOutputStream

    out
  • Constructor Summary

    Constructors
    Constructor
    Description
    PrintStream(File file)
    使用指定的文件创建一个新的打印流,不自动刷新行。
    PrintStream(File file, String csn)
    使用指定的文件和字符集创建一个新的打印流,不自动刷新行。
    PrintStream(File file, Charset charset)
    使用指定的文件和字符集创建一个新的打印流,不自动刷新行。
    使用指定的输出流创建一个新的打印流,不自动刷新行。
    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 Type
    Method
    Description
    append(char c)
    将指定的字符附加到此输出流。
    将指定的字符序列附加到此输出流。
    append(CharSequence csq, int start, int end)
    将指定字符序列的子序列附加到此输出流。
    返回此 PrintStream 实例中使用的字符集。
    boolean
    如果流未关闭,则刷新流并检查其错误状态。
    protected void
    清除此流的错误状态。
    void
    close()
    关闭流。
    void
    flush()
    刷新流。
    format(String format, Object... args)
    使用指定的格式字符串和参数向此输出流写入格式化字符串。
    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
    打印字符串。
    printf(String format, Object... args)
    使用指定的格式字符串和参数向此输出流写入格式化字符串的便利方法。
    printf(Locale l, String format, Object... args)
    使用指定的格式字符串和参数向此输出流写入格式化字符串的便利方法。
    void
    通过写入行分隔符字符串终止当前行。
    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
    将流的错误状态设置为 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

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • PrintStream

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

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

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

      public PrintStream(OutputStream out, boolean autoFlush, Charset charset)
      使用指定的输出流、行刷新和字符集创建一个新的打印流。此便利构造函数将创建必要的中间 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 - 支持的字符集的名称
      抛出:
      FileNotFoundException - 如果给定的文件对象不表示现有的可写常规文件,且无法创建具有该名称的新常规文件,或者在打开或创建文件时发生其他错误
      SecurityException - 如果存在安全管理器且checkWrite(fileName)拒绝对文件的写访问
      UnsupportedEncodingException - 如果不支持命名的字符集
      自从:
      1.5
    • PrintStream

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

      public PrintStream(File file, Charset charset) throws IOException
      创建一个新的打印流,不自动刷新行,使用指定的文件和字符集。这个便利构造函数创建必要的中间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

      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)
      打印布尔值。由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)
      打印布尔值,然后终止行。此方法的行为就像调用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

      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.getDefault(Locale.Category)返回的区域设置,其中指定了 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规范,可能不会附加整个序列。例如,调用字符缓冲区的 toString方法将返回一个内容取决于缓冲区的位置和限制的子序列。

      在接口中指定:
      append in interface 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