阅读(3328) (0)

鸿蒙OS Console

2022-10-17 09:38:13 更新

Console

java.lang.Object

|---java.io.Console

public final class Console
extends Object
implements Flushable

访问与当前 Java 虚拟机关联的基于字符的控制台设备(如果有)的方法。

虚拟机是否具有控制台取决于底层平台以及调用虚拟机的方式。 如果虚拟机从交互式命令行启动而不重定向标准输入和输出流,那么它的控制台将存在,并且通常会连接到启动虚拟机的键盘和显示器。 如果虚拟机是自动启动的,例如通过后台作业调度程序,那么它通常不会有控制台。

如果这个虚拟机有一个控制台,那么它由这个类的一个唯一实例表示,可以通过调用 System.console() 方法获得。 如果没有可用的控制台设备,则调用该方法将返回 null。

读写操作同步,保证关键操作的原子完成; 因此,调用方法 readLine()、readPassword()、format()、printf() 以及对 reader() 和 writer() 返回的对象的读取、格式化和写入操作可能会在多线程场景中阻塞。

对 reader() 和 writer() 返回的对象调用 close() 不会关闭这些对象的底层流。

当到达控制台输入流的末尾时,控制台读取方法返回 null,例如通过在 Unix 上键入 control-D 或在 Windows 上键入 control-Z。 如果稍后在控制台的输入设备上输入其他字符,则后续读取操作将成功。

除非另有说明,否则将 null 参数传递给此类中的任何方法都将导致抛出 NullPointerException。

安全说明:如果应用程序需要读取密码或其他安全数据,则应使用 readPassword() 或 readPassword(java.lang.String,java.lang.Object...) 并在处理后手动将返回的字符数组归零 最小化内存中敏感数据的生命周期。

 Console cons;
 char[] passwd;
 if ((cons = System.console()) != null &&
     (passwd = cons.readPassword("[%s]", "Password:")) != null) {
     ...
     java.util.Arrays.fill(passwd, ' ');
 }

Since:

1.6

方法总结

修饰符和类型 方法 描述
void flush() 刷新控制台并强制立即写入任何缓冲的输出。
Console format(String fmt, Object... args) 使用指定的格式字符串和参数将格式化字符串写入此控制台的输出流。
Console printf(String format, Object... args) 使用指定的格式字符串和参数将格式化字符串写入此控制台的输出流的便捷方法。
Reader reader() 检索与此控制台关联的唯一 Reader 对象。
String readLine() 从控制台读取一行文本。
String readLine(String fmt, Object... args) 提供格式化提示,然后从控制台读取一行文本。
char[] readPassword() 从禁用回显的控制台读取密码或密码
char[] readPassword(String fmt, Object... args) 提供格式化提示,然后从禁用回显的控制台读取密码或密码。
PrintWriter writer() 检索与此控制台关联的唯一 PrintWriter 对象。
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

方法详情

writer

public PrintWriter writer()

检索与此控制台关联的唯一 PrintWriter 对象。

返回:

与此控制台关联的打印机

reader

public Reader reader()

检索与此控制台关联的唯一 Reader 对象。

此方法旨在由复杂的应用程序使用,例如,使用 Scanner 提供的丰富解析/扫描功能的 Scanner 对象:

 Console con = System.console();
 if (con != null) {
     Scanner sc = new Scanner(con.reader());
     ...
 }

对于只需要面向行读取的简单应用程序,请使用 readLine(java.lang.String, java.lang.Object...)。

对返回对象的批量读取操作 [read(char]) 、 [read(char], int, int) 和 read(java.nio.CharBuffer) 不会读取超出每次调用边界的字符,即使 目标缓冲区有空间容纳更多字符。 如果尚未在控制台的输入设备上输入或到达行边界,则 Reader 的读取方法可能会阻塞。 行边界被认为是换行符('\n')、回车符('\r')、紧跟换行符的回车符或流结束中的任何一种。

返回:

与此控制台关联的阅读器

format

public Console format(String fmt, Object... args)

使用指定的格式字符串和参数将格式化字符串写入此控制台的输出流。

参数:

参数名称 参数描述
fmt 格式字符串语法中描述的格式字符串
args 格式字符串中的格式说明符引用的参数。 如果参数多于格式说明符,则忽略多余的参数。 参数的数量是可变的,可能为零。 参数的最大数量受《Java™ 虚拟机规范》中定义的 Java 数组的最大维度限制。 空参数的行为取决于转换。

返回:

这个控制台

Throws:

Throw名称 Throw描述
IllegalFormatException 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。

printf

public Console printf(String format, Object... args)

使用指定的格式字符串和参数将格式化字符串写入此控制台的输出流的便捷方法。

调用 con.printf(format, args) 形式的此方法的行为与调用

con.format(format, args)

参数:

参数名称 参数描述
format 格式字符串语法中描述的格式字符串。
args 格式字符串中的格式说明符引用的参数。 如果参数多于格式说明符,则忽略多余的参数。 参数的数量是可变的,可能为零。 参数的最大数量受《Java™ 虚拟机规范》中定义的 Java 数组的最大维度限制。 空参数的行为取决于转换。

返回:

这个控制台

Throws:

Throw名称 Throw描述
IllegalFormatException 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。

readLine

public String readLine(String fmt, Object... args)

提供格式化提示,然后从控制台读取一行文本。

参数:

参数名称 参数描述
fmt 格式字符串语法中描述的格式字符串。
args 格式字符串中的格式说明符引用的参数。 如果参数多于格式说明符,则忽略多余的参数。 参数的最大数量受《Java™ 虚拟机规范》中定义的 Java 数组的最大维度限制。

返回:

包含从控制台读取的行的字符串,不包括任何行终止字符,如果已到达流的结尾,则为 null。

Throws:

Throw名称 Throw描述
IllegalFormatException 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。
IOError 如果发生 I/O 错误。

readLine

public String readLine()

从控制台读取一行文本。

返回:

包含从控制台读取的行的字符串,不包括任何行终止字符,如果已到达流的结尾,则为 null。

Throws:

Throw名称 Throw描述
IOError 如果发生 I/O 错误。

readPassword

public char[] readPassword(String fmt, Object... args)

提供格式化提示,然后从禁用回显的控制台读取密码或密码。

参数:

参数名称 参数描述
fmt 提示文本的格式字符串语法中所述的格式字符串。
args 格式字符串中的格式说明符引用的参数。 如果参数多于格式说明符,则忽略多余的参数。 参数的最大数量受《Java™ 虚拟机规范》中定义的 Java 数组的最大维度限制。

返回:

包含从控制台读取的密码或密码短语的字符数组,不包括任何行终止字符,如果已到达流的结尾,则为 null。

Throws:

Throw名称 Throw描述
IllegalFormatException 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、给定格式字符串的参数不足或其他非法条件。
IOError 如果发生 I/O 错误。

readPassword

public char[] readPassword()

从禁用回显的控制台读取密码或密码

返回:

包含从控制台读取的密码或密码短语的字符数组,不包括任何行终止字符,如果已到达流的结尾,则为 null。

Throws:

Throw名称 Throw描述
IOError 如果发生 I/O 错误。

flush

public void flush()

刷新控制台并强制立即写入任何缓冲的输出。

指定者:

在接口 Flushable 中刷新