模块  java.base
软件包  java.io

Class PrintWriter

  • 实现的所有接口
    CloseableFlushableAppendableAutoCloseable

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

    不像PrintStream类,如果启用自动刷新,将只有当一个做printlnprintf ,或format被调用的方法,而不是当一个换行符恰好是输出。 这些方法使用平台自己的行分隔符概念而不是换行符。

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

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

    从以下版本开始:
    1.1
    • 字段汇总

      字段  
      变量和类型 字段 描述
      protected Writer out
      PrintWriter的基础字符输出流。
    • 构造方法摘要

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

      所有方法  实例方法 具体的方法 
      变量和类型 方法 描述
      PrintWriter append​(char c)
      将指定的字符追加到此writer。
      PrintWriter append​(CharSequence csq)
      将指定的字符序列追加到此writer。
      PrintWriter append​(CharSequence csq, int start, int end)
      将指定字符序列的子序列追加到此writer。
      boolean checkError()
      如果流未关闭则刷新流并检查其错误状态。
      protected void clearError()
      清除此流的错误状态。
      void close()
      关闭流并释放与其关联的所有系统资源。
      void flush()
      刷新流。
      PrintWriter format​(String format, Object... args)
      使用指定的格式字符串和参数将格式化的字符串写入此writer。
      PrintWriter format​(Locale l, String format, Object... args)
      使用指定的格式字符串和参数将格式化的字符串写入此writer。
      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 print​(String s)
      打印一个字符串。
      PrintWriter printf​(String format, Object... args)
      使用指定的格式字符串和参数将格式化字符串写入此writer的便捷方法。
      PrintWriter printf​(Locale l, String format, Object... args)
      使用指定的格式字符串和参数将格式化字符串写入此writer的便捷方法。
      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 println​(Object x)
      打印一个对象,然后终止该行。
      void println​(String x)
      打印一个字符串,然后终止该行。
      protected void setError()
      表示发生了错误。
      void write​(char[] buf)
      写一个字符数组。
      void write​(char[] buf, int off, int len)
      写入一个字符数组的一部分。
      void write​(int c)
      写一个字符。
      void write​(String s)
      写一个字符串。
      void write​(String s, int off, int len)
      写一个字符串的一部分。
    • 字段详细信息

      • out

        protected Writer out
        PrintWriter的基础字符输出流。
        从以下版本开始:
        1.2
    • 构造方法详细信息

      • PrintWriter

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

        public PrintWriter​(Writer out,                   boolean autoFlush)
        创建一个新的PrintWriter。
        参数
        out - 字符输出流
        autoFlush - 布尔值; 如果为真,则printlnprintf ,或format方法将刷新输出缓冲区
      • PrintWriter

        public PrintWriter​(OutputStream out)
        从现有的OutputStream创建一个没有自动行刷新的新PrintWriter。 此便捷构造函数创建必要的中间OutputStreamWriter,它将使用默认字符编码将字符转换为字节。
        参数
        out - 输出流
        另请参见:
        OutputStreamWriter(java.io.OutputStream)
      • PrintWriter

        public PrintWriter​(OutputStream out,                   boolean autoFlush)
        从现有的OutputStream创建一个新的PrintWriter。 此便捷构造函数创建必要的中间OutputStreamWriter,它将使用默认字符编码将字符转换为字节。
        参数
        out - 输出流
        autoFlush - 布尔值; 如果为真,则printlnprintf ,或format方法将刷新输出缓冲区
        另请参见:
        OutputStreamWriter(java.io.OutputStream)
      • PrintWriter

        public PrintWriter​(OutputStream out,                   boolean autoFlush,                   Charset charset)
        从现有的OutputStream创建一个新的PrintWriter。 这个便捷构造函数创建了必要的中间OutputStreamWriter,它将使用指定的字符集将字符转换为字节。
        参数
        out - 输出流
        autoFlush - 布尔值; 如果为真,则printlnprintf ,或format方法将刷新输出缓冲区
        charset - A charset
        从以下版本开始:
        10
      • PrintWriter

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

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

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

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

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

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

      • checkError

        public boolean checkError()
        如果流未关闭则刷新流并检查其错误状态。
        结果
        true如果打印流在基础输出流或格式转换期间遇到错误。
      • setError

        protected void setError()
        表示发生了错误。

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

      • clearError

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

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

        从以下版本开始:
        1.6
      • write

        public void write​(int c)
        写一个字符。
        重写:
        writeWriter
        参数
        c - 指定要写入的字符的int。
      • write

        public void write​(char[] buf,                  int off,                  int len)
        写入一个字符数组的一部分。
        Specified by:
        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)
        打印一个布尔值。 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)
        打印一个长整数。 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)
        打印一个布尔值,然后终止该行。 此方法的行为就像调用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)
        使用指定的格式字符串和参数将格式化字符串写入此writer的便捷方法。 如果启用了自动刷新,则调用此方法将刷新输出缓冲区。

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

           out.format(format, args)  
        参数
        format -如在描述的格式字符串 Format string syntax
        args - 格式字符串中格式说明符引用的参数。 如果参数多于格式说明符,则忽略额外参数。 参数的数量是可变的,可以为零。 参数的最大数量受The Java™ Virtual Machine Specification定义的Java数组的最大维数限制。 null参数上的行为取决于conversion
        结果
        这位作家
        异常
        IllegalFormatException - 如果格式字符串包含非法语法,格式说明符与给定参数不兼容,给定格式字符串的参数不足或其他非法条件。 有关所有可能的格式错误的说明,请参阅formatter类规范的Details部分。
        NullPointerException - 如果 formatnull
        从以下版本开始:
        1.5
      • printf

        public PrintWriter printf​(Locale l,                          String format,                          Object... args)
        使用指定的格式字符串和参数将格式化字符串写入此writer的便捷方法。 如果启用了自动刷新,则调用此方法将刷新输出缓冲区。

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

           out.format(l, format, args)  
        参数
        l - 格式化时应用的locale 如果lnull则不应用本地化。
        format - 格式字符串,如 Format string syntax中所述
        args - 格式字符串中格式说明符引用的参数。 如果参数多于格式说明符,则忽略额外参数。 参数的数量是可变的,可以为零。 参数的最大数量受The Java™ Virtual Machine Specification定义的Java数组的最大维数限制。 null参数上的行为取决于conversion
        结果
        这位作家
        异常
        IllegalFormatException - 如果格式字符串包含非法语法,格式说明符与给定参数不兼容,给定格式字符串的参数不足或其他非法条件。 有关所有可能的格式错误的说明,请参阅formatter类规范的Details部分。
        NullPointerException - 如果 formatnull
        从以下版本开始:
        1.5
      • format

        public PrintWriter format​(String format,                          Object... args)
        使用指定的格式字符串和参数将格式化的字符串写入此writer。 如果启用了自动刷新,则调用此方法将刷新输出缓冲区。

        始终使用的语言环境是Locale.getDefault()返回的语言环境,无论此对象上是否有任何其他格式化方法的调用。

        参数
        format -如在描述的格式字符串 Format string syntax
        args - 格式字符串中格式说明符引用的参数。 如果参数多于格式说明符,则忽略额外参数。 参数的数量是可变的,可以为零。 参数的最大数量受The Java™ Virtual Machine Specification定义的Java数组的最大维数限制。 null参数上的行为取决于conversion
        结果
        这位作家
        异常
        IllegalFormatException - 如果格式字符串包含非法语法,格式说明符与给定参数不兼容,给定格式字符串的参数不足或其他非法条件。 有关所有可能的格式错误的说明,请参阅Formatter类规范的Details部分。
        NullPointerException - 如果 formatnull
        从以下版本开始:
        1.5
      • format

        public PrintWriter format​(Locale l,                          String format,                          Object... args)
        使用指定的格式字符串和参数将格式化的字符串写入此writer。 如果启用了自动刷新,则调用此方法将刷新输出缓冲区。
        参数
        l - 格式化期间应用的locale 如果lnull则不应用本地化。
        format -如在描述的格式字符串 Format string syntax
        args - 格式字符串中格式说明符引用的参数。 如果参数多于格式说明符,则忽略额外参数。 参数的数量是可变的,可以为零。 参数的最大数量受The Java™ Virtual Machine Specification定义的Java数组的最大维数限制。 null参数的行为取决于conversion
        结果
        这位作家
        异常
        IllegalFormatException - 如果格式字符串包含非法语法,格式说明符与给定参数不兼容,给定格式字符串的参数不足或其他非法条件。 有关所有可能的格式错误的说明,请参阅formatter类规范的Details部分。
        NullPointerException - 如果 formatnull
        从以下版本开始:
        1.5
      • append

        public PrintWriter append​(CharSequence csq)
        将指定的字符序列追加到此writer。

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

           out.write(csq.toString())  

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

        Specified by:
        append ,界面 Appendable
        重写:
        append在类 Writer
        参数
        csq - 要追加的字符序列。 如果csqnull ,则四个字符"null"将附加到此writer。
        结果
        这位作家
        从以下版本开始:
        1.5
      • append

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

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

           out.write(csq.subSequence(start, end).toString())  
        Specified by:
        append在界面 Appendable
        重写:
        appendWriter
        参数
        csq - 将附加子序列的字符序列。 如果csqnull ,则将附加字符,就像csq包含四个字符"null"
        start - 子序列中第一个字符的索引
        end - 子序列中最后一个字符后面的字符的索引
        结果
        这位作家
        异常
        IndexOutOfBoundsException - 如果 startend为负数,则 start大于 end ,或者 end大于 csq.length()
        从以下版本开始:
        1.5
      • append

        public PrintWriter append​(char c)
        将指定的字符追加到此writer。

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

           out.write(c)  
        Specified by:
        append在界面 Appendable
        重写:
        appendWriter
        参数
        c - 要追加的16位字符
        结果
        这位作家
        从以下版本开始:
        1.5