模块 java.base
 java.io

类 PrintWriter

java.lang.Object
java.io.Writer
java.io.PrintWriter
所有已实现的接口:
Closeable , Flushable , Appendable , AutoCloseable

public class PrintWriter extends Writer
将对象的格式化表示打印到文本输出流。此类实现了 PrintStream 中的所有 print 方法。它不包含写入原始字节的方法,程序应为此使用未编码的字节流。

PrintStream 类不同,如果启用了自动刷新,则仅当调用 printlnprintfformat 方法之一时才会完成,而不是每当换行符恰好输出时。这些方法使用平台自己的行分隔符概念而不是换行符。

此类中的方法从不抛出 I/O 异常,尽管它的某些构造函数可能抛出异常。客户端可以通过调用 checkError() 来询问是否发生了任何错误。

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

自从:
1.1
  • 字段摘要

    字段
    修饰符和类型
    Field
    描述
    protected Writer
    这个 PrintWriter 的底层字符输出流。

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

    lock
  • 构造方法总结

    构造方法
    构造方法
    描述
    使用指定的文件创建一个新的 PrintWriter,没有自动行刷新。
    PrintWriter(File file, String csn)
    使用指定的文件和字符集创建一个新的 PrintWriter,没有自动行刷新。
    PrintWriter(File file, Charset charset)
    使用指定的文件和字符集创建一个新的 PrintWriter,没有自动行刷新。
    从现有的 OutputStream 创建一个新的 PrintWriter,没有自动行刷新。
    PrintWriter(OutputStream out, boolean autoFlush)
    从现有的 OutputStream 创建一个新的 PrintWriter。
    PrintWriter(OutputStream out, boolean autoFlush, Charset charset)
    从现有的 OutputStream 创建一个新的 PrintWriter。
    创建一个新的 PrintWriter,没有自动行刷新。
    PrintWriter(Writer out, boolean autoFlush)
    创建一个新的 PrintWriter。
    PrintWriter(String fileName)
    使用指定的文件名创建一个新的 PrintWriter,没有自动行刷新。
    PrintWriter(String fileName, String csn)
    使用指定的文件名和字符集创建一个新的 PrintWriter,没有自动行刷新。
    PrintWriter(String fileName, Charset charset)
    使用指定的文件名和字符集创建一个新的 PrintWriter,没有自动行刷新。
  • 方法总结

    修饰符和类型
    方法
    描述
    append(char c)
    将指定的字符附加到此编写器。
    将指定的字符序列附加到此编写器。
    append(CharSequence csq, int start, int end)
    将指定字符序列的子序列附加到此 writer。
    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)
    打印一个双精度浮点数,然后终止该行。
    void
    println(float x)
    打印一个浮点数,然后终止该行。
    void
    println(int x)
    打印一个整数,然后终止该行。
    void
    println(long x)
    打印一个长整数,然后终止该行。
    void
    打印一个对象,然后终止该行。
    void
    打印一个字符串,然后终止该行。
    protected void
    将流的错误状态设置为 true
    void
    write(char[] buf)
    写入一个字符数组。
    void
    write(char[] buf, int off, int len)
    写入字符数组的一部分。
    void
    write(int c)
    写入单个字符。
    void
    写一个字符串。
    void
    write(String s, int off, int len)
    写入字符串的一部分。

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

    nullWriter

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

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 字段详细信息

    • out

      protected Writer  out
      这个 PrintWriter 的底层字符输出流。
      自从:
      1.2
  • 构造方法详细信息

    • PrintWriter

      public PrintWriter(Writer  out)
      创建一个新的 PrintWriter,没有自动行刷新。
      参数:
      out - 字符输出流
    • PrintWriter

      public PrintWriter(Writer  out, boolean autoFlush)
      创建一个新的 PrintWriter。
      参数:
      out - 字符输出流
      autoFlush - 一个boolean;如果为真,printlnprintfformat 方法将刷新输出缓冲区
    • PrintWriter

      public PrintWriter(OutputStream  out)
      从现有的 OutputStream 创建一个新的 PrintWriter,没有自动行刷新。这个方便的构造函数创建必要的中间 OutputStreamWriter,它将使用默认字符集将字符转换为字节,或者 outPrintStream ,打印流使用的字符集。
      参数:
      out - 输出流
      参见:
    • PrintWriter

      public PrintWriter(OutputStream  out, boolean autoFlush)
      从现有的 OutputStream 创建一个新的 PrintWriter。这个方便的构造函数创建必要的中间 OutputStreamWriter,它将使用默认字符集将字符转换为字节,或者 outPrintStream ,打印流使用的字符集。
      参数:
      out - 输出流
      autoFlush - 一个boolean;如果为真,printlnprintfformat 方法将刷新输出缓冲区
      参见:
    • PrintWriter

      public PrintWriter(OutputStream  out, boolean autoFlush, Charset  charset)
      从现有的 OutputStream 创建一个新的 PrintWriter。这个方便的构造方法创建必要的中间 OutputStreamWriter,它将使用指定的字符集将字符转换为字节。
      参数:
      out - 输出流
      autoFlush - 一个boolean;如果为真,printlnprintfformat 方法将刷新输出缓冲区
      charset - 一个 charset
      自从:
      10
    • PrintWriter

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

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

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

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

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

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

    • flush

      public void flush()
      冲洗流。
      指定者:
      flush 在接口 Flushable
      指定者:
      flush 在类 Writer
      参见:
    • close

      public void close()
      关闭流并释放与其关联的任何系统资源。关闭之前关闭的流没有任何效果。
      指定者:
      close 在接口 AutoCloseable
      指定者:
      close 在接口 Closeable
      指定者:
      close 在类 Writer
      参见:
    • checkError

      public boolean checkError()
      如果流未关闭则刷新流并检查其错误状态。
      返回:
      true 当且仅当此流遇到 IOException 或调用了 setError 方法
    • setError

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

      此方法将导致 checkError() 的后续调用返回 true,直到调用 clearError()

    • clearError

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

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

      自从:
      1.6
    • write

      public void write(int c)
      写入单个字符。
      重写:
      write 在类 Writer
      参数:
      c - 指定要写入的字符的 int。
    • write

      public void write(char[] buf, int off, int len)
      写入字符数组的一部分。
      指定者:
      write 在类 Writer
      参数:
      buf - 字符数组
      off - 开始写入字符的偏移量
      len - 要写入的字符数
      抛出:
      IndexOutOfBoundsException - 如果 offlen 参数的值导致底层 Writer 的相应方法抛出 IndexOutOfBoundsException
    • write

      public void write(char[] buf)
      写入一个字符数组。此方法不能从 Writer 类继承,因为它必须抑制 I/O 异常。
      重写:
      write 在类 Writer
      参数:
      buf - 要写入的字符数组
    • write

      public void write(String  s, int off, int len)
      写入字符串的一部分。
      重写:
      write 在类 Writer
      参数:
      s - 一个字符串
      off - 开始写入字符的偏移量
      len - 要写入的字符数
      抛出:
      IndexOutOfBoundsException - 如果 offlen 参数的值导致底层 Writer 的相应方法抛出 IndexOutOfBoundsException
    • write

      public void write(String  s)
      写一个字符串。此方法不能从 Writer 类继承,因为它必须抑制 I/O 异常。
      重写:
      write 在类 Writer
      参数:
      s - 要写入的字符串
    • 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)
      打印字符数组。字符按照默认的charset转换成字节,这些字节的写法和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()
      通过写入行分隔符字符串终止当前行。行分隔符是 System.lineSeparator() ,不一定是单个换行符 ('\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 - 要打印的 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 - 要打印的 char 值的数组
    • 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 PrintWriter  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 PrintWriter  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 PrintWriter  format(String  format, Object ... args)
      使用指定的格式字符串和参数将格式化字符串写入此编写器。如果启用自动刷新,调用此方法将刷新输出缓冲区。

      始终使用的locale是 Locale.getDefault() 返回的locale,无论之前是否对该对象调用过其他格式化方法。

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

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

      public PrintWriter  append(CharSequence  csq)
      将指定的字符序列附加到此编写器。

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

      
         out.write(csq.toString())
        

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

      指定者:
      append 在接口 Appendable
      重写:
      append 在类 Writer
      参数:
      csq - 要追加的字符序列。如果 csqnull ,那么四个字符 "null" 会附加到这个 writer。
      返回:
      这位作家
      自从:
      1.5
    • append

      public PrintWriter  append(CharSequence  csq, int start, int end)
      将指定字符序列的子序列附加到此 writer。

      csq 不是 null 时调用 out.append(csq, start, end) 形式的方法,其行为与调用完全相同

      
         out.write(csq.subSequence(start, end).toString())
        
      指定者:
      append 在接口 Appendable
      重写:
      append 在类 Writer
      参数:
      csq - 将追加子序列的字符序列。如果 csqnull ,那么字符将被追加,就好像 csq 包含四个字符 "null" 一样。
      start - 子序列中第一个字符的索引
      end - 子序列中最后一个字符之后的字符的索引
      返回:
      这位作家
      抛出:
      IndexOutOfBoundsException - 如果 startend 为负,则 start 大于 end,或者 end 大于 csq.length()
      自从:
      1.5
    • append

      public PrintWriter  append(char c)
      将指定的字符附加到此编写器。

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

      
         out.write(c)
        
      指定者:
      append 在接口 Appendable
      重写:
      append 在类 Writer
      参数:
      c - 要追加的 16 位字符
      返回:
      这位作家
      自从:
      1.5