鸿蒙OS PrintWriter
PrintWriter
java.lang.Object
|---java.io.Writer
|---|---java.io.PrintWriter
public class PrintWriter
extends Writer
将对象的格式化表示打印到文本输出流。 此类实现了 PrintStream 中的所有打印方法。 它不包含写入原始字节的方法,程序应该使用未编码的字节流。
与 PrintStream 类不同,如果启用了自动刷新,它将仅在调用 println、printf 或 format 方法之一时完成,而不是在碰巧输出换行符时完成。 这些方法使用平台自己的行分隔符概念,而不是换行符。
此类中的方法从不抛出 I/O 异常,尽管它的某些构造函数可能会。 客户端可以通过调用 checkError() 来查询是否发生了任何错误。
Since:
JDK1.1
字段摘要
修饰符和类型 | 字段 | 描述 |
---|---|---|
protected Writer | out | 此 PrintWriter 的基础字符输出流。 |
从类 java.io.Writer 继承的字段 |
---|
lock |
构造函数摘要
构造函数 | 描述 |
---|---|
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,而不自动刷新行。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
PrintWriter | append(char c) | 将指定的字符附加到这个 writer。 |
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) | 使用指定的格式字符串和参数将格式化字符串写入此编写器的便捷方法。 |
PrintWriter | printf(Locale l, String format, Object... args) | 使用指定的格式字符串和参数将格式化字符串写入此编写器的便捷方法。 |
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) | 写入字符串的一部分。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息
out
protected Writer out
此 PrintWriter 的基础字符输出流。
Since:
1.2
构造函数详细信息
PrintWriter
public PrintWriter(Writer out)
创建一个新的 PrintWriter,没有自动行刷新。
参数:
参数名称 | 参数描述 |
---|---|
out | 字符输出流 |
PrintWriter
public PrintWriter(Writer out, boolean autoFlush)
创建一个新的 PrintWriter。
参数:
参数名称 | 参数描述 |
---|---|
out | 字符输出流 |
autoFlush | 一个布尔值; 如果为 true,println、printf 或 format 方法将刷新输出缓冲区 |
PrintWriter
public PrintWriter(OutputStream out)
从现有的 OutputStream 创建一个新的 PrintWriter,而不自动刷新行。 这个方便的构造函数创建了必要的中间 OutputStreamWriter,它将使用默认字符编码将字符转换为字节。
参数:
参数名称 | 参数描述 |
---|---|
out | 输出流 |
PrintWriter
public PrintWriter(OutputStream out, boolean autoFlush)
从现有的 OutputStream 创建一个新的 PrintWriter。 这个方便的构造函数创建了必要的中间 OutputStreamWriter,它将使用默认字符编码将字符转换为字节。
参数:
参数名称 | 参数描述 |
---|---|
out | 输出流 |
autoFlush | 一个布尔值; 如果为 true,println、printf 或 format 方法将刷新输出缓冲区 |
PrintWriter
public PrintWriter(String fileName) throws FileNotFoundException
使用指定的文件名创建一个新的 PrintWriter,而不自动刷新行。 这个方便的构造函数创建了必要的中间 OutputStreamWriter,它将使用 Java 虚拟机的这个实例的默认字符集对字符进行编码。
参数:
参数名称 | 参数描述 |
---|---|
fileName | 用作此 writer 目标的文件的名称。 如果文件存在,那么它将被截断为零大小; 否则,将创建一个新文件。 输出将被写入文件并被缓冲。 |
Throws:
Throw名称 | Throw描述 |
---|---|
FileNotFoundException | 如果给定的字符串不表示现有的、可写的常规文件,并且无法创建具有该名称的新常规文件,或者在打开或创建文件时出现其他错误 |
SecurityException | 如果存在安全管理器并且 SecurityManager#checkWrite 拒绝对文件的写访问权限 |
Since:
1.5
PrintWriter
public PrintWriter(String fileName, String csn) throws FileNotFoundException, UnsupportedEncodingException
使用指定的文件名和字符集创建一个新的 PrintWriter,而不自动刷新行。 这个方便的构造函数创建了必要的中间 OutputStreamWriter,它将使用提供的字符集对字符进行编码。
参数:
参数名称 | 参数描述 |
---|---|
fileName | 用作此 writer 目标的文件的名称。 如果文件存在,那么它将被截断为零大小; 否则,将创建一个新文件。 输出将被写入文件并被缓冲。 |
csn | 支持的字符集的名称 |
Throws:
Throw名称 | Throw描述 |
---|---|
FileNotFoundException | 如果给定的字符串不表示现有的、可写的常规文件,并且无法创建具有该名称的新常规文件,或者在打开或创建文件时出现其他错误 |
SecurityException | 如果存在安全管理器并且 SecurityManager#checkWrite 拒绝对文件的写访问权限 |
UnsupportedEncodingException | 如果不支持命名字符集 |
Since:
1.5
PrintWriter
public PrintWriter(File file) throws FileNotFoundException
使用指定的文件创建一个新的 PrintWriter,而不自动刷新行。 这个方便的构造函数创建了必要的中间 OutputStreamWriter,它将使用 Java 虚拟机的这个实例的默认字符集对字符进行编码。
参数:
参数名称 | 参数描述 |
---|---|
file | 用作此 writer 目标的文件。 如果文件存在,那么它将被截断为零大小; 否则,将创建一个新文件。 输出将被写入文件并被缓冲。 |
Throws:
Throw名称 | Throw描述 |
---|---|
FileNotFoundException | 如果给定的文件对象不表示现有的可写常规文件并且无法创建该名称的新常规文件,或者在打开或创建文件时发生其他错误 |
SecurityException | 如果存在安全管理器并且 SecurityManager#checkWrite 拒绝对文件的写访问权限 |
Since:
1.5
PrintWriter
public PrintWriter(File file, String csn) throws FileNotFoundException, UnsupportedEncodingException
使用指定的文件和字符集创建一个新的 PrintWriter,而不自动刷新行。 这个方便的构造函数创建了必要的中间 OutputStreamWriter,它将使用提供的字符集对字符进行编码。
参数:
参数名称 | 参数描述 |
---|---|
file | 用作此 writer 目标的文件。 如果文件存在,那么它将被截断为零大小; 否则,将创建一个新文件。 输出将被写入文件并被缓冲。 |
csn | 支持的字符集的名称 |
Throws:
Throw名称 | Throw描述 |
---|---|
FileNotFoundException | 如果给定的文件对象不表示现有的可写常规文件并且无法创建该名称的新常规文件,或者在打开或创建文件时发生其他错误 |
SecurityException | 如果存在安全管理器并且 SecurityManager#checkWrite 拒绝对文件的写访问权限 |
UnsupportedEncodingException | 如果不支持命名字符集 |
Since:
1.5
方法详情
flush
public void flush()
冲洗流。
指定者:
在接口 Flushable 中刷新
指定者:
在 Writer 类中刷新
close
public void close()
关闭流并释放与其关联的任何系统资源。 关闭以前关闭的流没有效果。
指定者:
在接口 AutoCloseable 中关闭
指定者:
在接口Closeable中关闭
指定者:
close in class Writer
checkError
public boolean checkError()
如果流未关闭,则刷新流并检查其错误状态。
返回:
如果打印流在底层输出流上或在格式转换期间遇到错误,则为 true。
setError
protected void setError()
表示发生了错误。
此方法将导致对 checkError() 的后续调用返回 true,直到调用 clearError()。
clearError
protected void clearError()
清除此流的错误状态。
此方法将导致后续调用 checkError() 返回 false,直到另一个写入操作失败并调用 setError()。
Since:
1.6
write
public void write(int c)
写入单个字符。
覆盖:
在 Writer 类中写
参数:
参数名称 | 参数描述 |
---|---|
c | int 指定要写入的字符。 |
write
public void write(char[] buf, int off, int len)
写入字符数组的一部分。
指定者:
在 Writer 类中写
参数:
参数名称 | 参数描述 |
---|---|
buf | 字符数组 |
off | 开始写入字符的偏移量 |
len | 要写入的字符数 |
write
public void write(char[] buf)
写入一个字符数组。 此方法不能从 Writer 类继承,因为它必须抑制 I/O 异常。
覆盖:
在 Writer 类中写
参数:
参数名称 | 参数描述 |
---|---|
buf | 要写入的字符数组 |
write
public void write(String s, int off, int len)
写入字符串的一部分。
覆盖:
在 Writer 类中写
参数:
参数名称 | 参数描述 |
---|---|
s | 一个字符串 |
off | 开始写入字符的偏移量 |
len | 要写入的字符数 |
write
public void write(String s)
写入一个字符串。 此方法不能从 Writer 类继承,因为它必须抑制 I/O 异常。
覆盖:
在 Writer 类中写
参数:
参数名称 | 参数描述 |
---|---|
s | 要写入的字符串 |
public void print(boolean b)
打印一个布尔值。 String.valueOf(boolean) 生成的字符串按照平台默认的字符编码转换为字节,这些字节的写入方式与 write(int) 方法完全相同。
参数:
参数名称 | 参数描述 |
---|---|
b | 要打印的布尔值 |
public void print(char c)
打印一个字符。 字符根据平台默认的字符编码被翻译成一个或多个字节,这些字节完全按照 write(int) 方法的方式写入。
参数:
参数名称 | 参数描述 |
---|---|
c | 要打印的字符 |
public void print(int i)
打印一个整数。 String.valueOf(int) 生成的字符串按照平台默认的字符编码转换为字节,这些字节的写入方式与 write(int) 方法完全相同。
参数:
参数名称 | 参数描述 |
---|---|
i | 要打印的 int |
public void print(long l)
打印一个长整数。 String.valueOf(long) 生成的字符串按照平台默认的字符编码转换为字节,这些字节的写入方式与 write(int) 方法完全相同。
参数:
参数名称 | 参数描述 |
---|---|
l | 要打印的 long |
public void print(float f)
打印一个浮点数。 String.valueOf(float) 生成的字符串按照平台默认的字符编码转换为字节,这些字节的写入方式与 write(int) 方法完全相同。
参数:
参数名称 | 参数描述 |
---|---|
f | 要打印的浮点数 |
public void print(double d)
打印一个双精度浮点数。 String.valueOf(double) 生成的字符串按照平台默认的字符编码转换为字节,这些字节的写入方式与 write(int) 方法完全相同。
参数:
参数名称 | 参数描述 |
---|---|
d | 要打印的双精度 |
public void print(char[] s)
打印一个字符数组。 字符根据平台默认的字符编码转换为字节,这些字节完全按照 write(int) 方法的方式写入。
参数:
参数名称 | 参数描述 |
---|---|
s | 要打印的字符数组 |
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果 s 为空 |
public void print(String s)
打印一个字符串。 如果参数为空,则打印字符串“null”。 否则,字符串的字符会根据平台默认的字符编码转换为字节,并且这些字节完全按照 write(int) 方法的方式写入。
参数:
参数名称 | 参数描述 |
---|---|
s | 要打印的字符串 |
public void print(Object obj)
打印一个对象。 String.valueOf(Object) 方法生成的字符串按照平台默认的字符编码转换为字节,这些字节的写入方式与 write(int) 方法完全相同。
参数:
参数名称 | 参数描述 |
---|---|
obj | 要打印的对象 |
println
public void println()
通过写入行分隔符字符串来终止当前行。 行分隔符字符串由系统属性 line.separator 定义,不一定是单个换行符 ('\n')。
println
public void println(boolean x)
打印一个布尔值,然后终止该行。 这个方法的行为就像它调用 print(boolean) 然后 println()。
参数:
参数名称 | 参数描述 |
---|---|
x | 要打印的布尔值 |
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 | 要打印的浮点值 |
println
public void println(double x)
打印一个双精度浮点数,然后终止该行。 这个方法的行为就像它调用 print(double) 然后 println()。
参数:
参数名称 | 参数描述 |
---|---|
x | 要打印的双精度值 |
println
public void println(char[] x)
打印一个字符数组,然后终止该行。 这个方法的行为就像它调用 [print(char]) 然后 println()。
参数:
参数名称 | 参数描述 |
---|---|
x | 要打印的 char 值数组 |
println
public void println(String x)
打印一个字符串,然后终止该行。 这个方法的行为就好像它调用了 print(java.lang.String) 然后 println()。
参数:
参数名称 | 参数描述 |
---|---|
x | 要打印的字符串值 |
println
public void println(Object x)
打印一个对象,然后终止该行。 此方法首先调用 String.valueOf(x) 以获取打印对象的字符串值,然后表现得好像它调用 print(java.lang.String) 然后调用 println()。
参数:
参数名称 | 参数描述 |
---|---|
x | 要打印的对象。 |
printf
public PrintWriter printf(String format, Object... args)
使用指定的格式字符串和参数将格式化字符串写入此编写器的便捷方法。 如果启用了自动刷新,则调用此方法将刷新输出缓冲区。
形式为 out.printf(format, args) 的此方法的调用与调用的行为方式完全相同
out.format(format, args)
参数:
参数名称 | 参数描述 |
---|---|
format | 格式字符串语法中描述的格式字符串。 |
args | 格式字符串中的格式说明符引用的参数。 如果参数多于格式说明符,则忽略多余的参数。 参数的数量是可变的,可能为零。 参数的最大数量受《Java™ 虚拟机规范》中定义的 Java 数组的最大维度限制。 空参数的行为取决于转换。 |
返回:
This writer
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalFormatException | 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。 |
NullPointerException | 如果 format 为空 |
Since:
1.5
printf
public PrintWriter printf(Locale l, String format, Object... args)
使用指定的格式字符串和参数将格式化字符串写入此编写器的便捷方法。 如果启用了自动刷新,则调用此方法将刷新输出缓冲区。
形式为 out.printf(l, format, args) 的此方法的调用与调用的行为方式完全相同
out.format(l, format, args)
参数:
参数名称 | 参数描述 |
---|---|
l | 在格式化期间应用的语言环境。 如果 l 为空,则不应用本地化。 |
format | 格式字符串语法中描述的格式字符串。 |
args | 格式字符串中的格式说明符引用的参数。 如果参数多于格式说明符,则忽略多余的参数。 参数的数量是可变的,可能为零。 参数的最大数量受《Java™ 虚拟机规范》中定义的 Java 数组的最大维度限制。 空参数的行为取决于转换。 |
返回:
This writer
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalFormatException | 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。 |
NullPointerException | 如果 format 为空 |
Since:
1.5
format
public PrintWriter format(String format, Object... args)
使用指定的格式字符串和参数将格式化字符串写入此编写器。 如果启用了自动刷新,则调用此方法将刷新输出缓冲区。
始终使用的语言环境是由 Locale.getDefault() 返回的语言环境,无论之前对此对象是否调用过其他格式化方法。
参数:
参数名称 | 参数描述 |
---|---|
format | 格式字符串语法中描述的格式字符串。 |
args | 格式字符串中的格式说明符引用的参数。 如果参数多于格式说明符,则忽略多余的参数。 参数的数量是可变的,可能为零。 参数的最大数量受《Java™ 虚拟机规范》中定义的 Java 数组的最大维度限制。 空参数的行为取决于转换。 |
返回:
This writer
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalFormatException | 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。 |
NullPointerException | 如果 format 为空 |
Since:
1.5
format
public PrintWriter format(Locale l, String format, Object... args)
使用指定的格式字符串和参数将格式化字符串写入此编写器。 如果启用了自动刷新,则调用此方法将刷新输出缓冲区。
参数:
参数名称 | 参数描述 |
---|---|
l | 在格式化期间应用的语言环境。 如果 l 为空,则不应用本地化。 |
format | 格式字符串语法中描述的格式字符串。 |
args | 格式字符串中的格式说明符引用的参数。 如果参数多于格式说明符,则忽略多余的参数。 参数的数量是可变的,可能为零。 参数的最大数量受《Java™ 虚拟机规范》中定义的 Java 数组的最大维度限制。 空参数的行为取决于转换。 |
返回:
This writer
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalFormatException | 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。 |
NullPointerException | 如果 format 为空 |
Since:
1.5
append
public PrintWriter append(CharSequence csq)
将指定的字符序列附加到此编写器。
形式为 out.append(csq) 的此方法的调用与调用的行为方式完全相同
out.write(csq.toString())
根据字符序列 csq 的 toString 规范,可能不会附加整个序列。 例如,调用字符缓冲区的 toString 方法将返回一个子序列,其内容取决于缓冲区的位置和限制。
指定者:
在接口 Appendable 中追加
覆盖:
追加到类 Writer
参数:
参数名称 | 参数描述 |
---|---|
csq | 要追加的字符序列。 如果 csq 为空,则将四个字符“null”附加到此编写器。 |
返回:
This writer
Since:
1.5
append
public PrintWriter append(CharSequence csq, int start, int end)
将指定字符序列的子序列附加到此编写器。
当 csq 不为空时,以 out.append(csq, start, end) 形式调用此方法的行为与调用完全相同
out.write(csq.subSequence(start, end).toString())
指定者:
在接口 Appendable 中追加
覆盖:
追加到类 Writer
参数:
参数名称 | 参数描述 |
---|---|
csq | 从中追加子序列的字符序列。 如果 csq 为 null,则将附加字符,就好像 csq 包含四个字符“null”。 |
start | 子序列中第一个字符的索引 |
end | 子序列中最后一个字符之后的字符的索引 |
返回:
This writer
Throws:
Throw名称 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果 start 或 end 为负数,则 start 大于 end,或者 end 大于 csq.length() |
Since:
1.5
append
public PrintWriter append(char c)
将指定的字符附加到这个 writer。
以 out.append(c) 形式调用此方法的行为与调用完全相同
out.write(c)
指定者:
在接口 Appendable 中追加
覆盖:
追加到类 Writer
参数:
参数名称 | 参数描述 |
---|---|
c | 要附加的 16 位字符 |
返回:
This writer
Since:
1.5