Module  java.base
软件包  java.io

Class PrintWriter

  • All Implemented Interfaces:
    CloseableFlushableAppendableAutoCloseable


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

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

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

    从以下版本开始:
    1.1
    • Field Summary

      Fields  
      Modifier and Type Field 描述
      protected Writer out
      这个 PrintWriter的底层字符输出流。
    • 构造方法摘要

      构造方法  
      Constructor 描述
      PrintWriter​(File file)
      使用指定的文件创建一个新的PrintWriter,而不需要自动的线路刷新。
      PrintWriter​(File file, String csn)
      使用指定的文件和字符集创建一个新的PrintWriter,而不需要自动进行线条刷新。
      PrintWriter​(OutputStream out)
      从现有的OutputStream创建一个新的PrintWriter,而不需要自动线路刷新。
      PrintWriter​(OutputStream out, boolean autoFlush)
      从现有的OutputStream创建一个新的PrintWriter。
      PrintWriter​(Writer out)
      创建一个新的PrintWriter,没有自动线冲洗。
      PrintWriter​(Writer out, boolean autoFlush)
      创建一个新的PrintWriter。
      PrintWriter​(String fileName)
      使用指定的文件名创建一个新的PrintWriter,而不需要自动执行行刷新。
      PrintWriter​(String fileName, String csn)
      使用指定的文件名和字符集创建一个新的PrintWriter,而不需要自动线路刷新。
    • 方法摘要

      所有方法  接口方法  具体的方法 
      Modifier and Type 方法 描述
      PrintWriter append​(char c)
      将指定的字符附加到此作者。
      PrintWriter append​(CharSequence csq)
      将指定的字符序列附加到此作者。
      PrintWriter append​(CharSequence csq, int start, int end)
      将指定字符序列的子序列附加到此作者。
      boolean checkError​()
      如果流未关闭,请刷新流并检查其错误状态。
      protected void clearError​()
      清除此流的错误状态。
      void close​()
      关闭流并释放与之相关联的任何系统资源。
      void flush​()
      刷新流。
      PrintWriter format​(String format, Object... args)
      使用指定的格式字符串和参数将格式化的字符串写入此写入程序。
      PrintWriter 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 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​(String fileName)
                    throws FileNotFoundException
        使用指定的文件名创建一个新的PrintWriter,而不需要自动执行行刷新。 这个方便的构造函数创建必要的中间件OutputStreamWriter ,它将使用Java虚拟机的这个实例使用default charset对字符进行编码。
        参数
        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​(File file)
                    throws FileNotFoundException
        使用指定的文件创建一个新的PrintWriter,而不需要自动的线路刷新。 这个方便的构造函数创建必要的中间件OutputStreamWriter ,它将使用Java虚拟机的这个实例使用default charset对字符进行编码。
        参数
        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
    • 方法详细信息

      • 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:
        writeWriter
        参数
        buf - 字符数组
        off - 开始编写字符的偏移量
        len - 要写入的字符数
        异常
        IndexOutOfBoundsException - 如果 offlen参数的值导致底层 Writer的相应方法抛出一个 IndexOutOfBoundsException
      • write

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

        public void write​(String s,
                          int off,
                          int len)
        写一个字符串的一部分。
        重写:
        writeWriter
        参数
        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​(long l)
        打印一个长整数。 String.valueOf(long)生成的字符串根据平台的默认字符编码转换为字节,这些字节的格式完全以write(int)的方式写入。
        参数
        l - 要打印的 long
        另请参见:
        Long.toString(long)
      • print

        public void print​(char[] s)
        打印字符数组。 字符根据平台的默认字符编码转换为字节,这些字节的格式完全按照write(int)的方式写入。
        参数
        s - 要打印的字符数组
        异常
        NullPointerException - 如果 snull
      • print

        public void print​(String s)
        打印字符串。 如果参数为null则打印字符串"null" 否则,根据平台的默认字符编码将字符串的字符转换为字节,这些字节的格式完全按照write(int)的方式编写。
        参数
        s - 要打印的 String
      • 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 - 如果格式字符串包含非法语法,则与给定参数不兼容的格式说明符,给定格式字符串的参数不足或其他非法条件。 有关所有可能的格式化错误的规范,请参阅格式化程序类规范的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 - 如果格式字符串包含非法语法,则与给定参数不兼容的格式说明符,给定格式字符串的参数不足或其他非法条件。 有关所有可能的格式化错误的规范,请参阅格式化程序类规范的Details部分。
        NullPointerException - 如果 formatnull
        从以下版本开始:
        1.5
      • format

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

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

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

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

           out.write(csq.toString())  

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

        Specified by:
        append在接口 Appendable
        重写:
        appendWriter
        参数
        csq - 要附加的字符序列。 如果csqnull ,则该"null"器附加四个字符"null"
        结果
        这位作家
        从以下版本开始:
        1.5
      • append

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

        形式的这种方法的调用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)
        将指定的字符附加到此作者。

        对这种out.append(c)形式的方法的调用与调用的方式完全相同

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