- java.lang.Object
-
- java.io.Console
-
- 实现的所有接口
-
Flushable
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
参数传递给null
中的任何方法都将导致抛出NullPointerException
。安全说明:如果应用程序需要读取密码或其他安全数据,则应使用
readPassword()
或readPassword(String, Object...)
并在处理后手动将返回的字符数组归零,以最大限度地缩短内存中敏感数据的生命周期。Console cons; char[] passwd; if ((cons = System.console()) != null && (passwd = cons.readPassword("[%s]", "Password:")) != null) { ... java.util.Arrays.fill(passwd, ' '); }
- 从以下版本开始:
- 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
对象。
-
-
-
方法详细信息
-
writer
public PrintWriter writer()
检索与此控制台关联的唯一PrintWriter
对象。- 结果
- 与此控制台关联的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
的read
方法可能会阻塞。 行绑定被认为是换行符('\n'
),回车符('\r'
),紧接着换行符的回车符或流结束中的任何一个。- 结果
- 与此控制台关联的阅读器
-
format
public Console format(String fmt, Object... args)
使用指定的格式字符串和参数将格式化字符串写入此控制台的输出流。- 参数
-
fmt
- Format string syntax中描述的格式字符串 -
args
- 格式字符串中格式说明符引用的参数。 如果参数多于格式说明符,则忽略额外参数。 参数的数量是可变的,可以为零。 参数的最大数量受The Java™ Virtual Machine Specification定义的Java数组的最大维数限制。null
参数上的行为取决于conversion 。 - 结果
- 这个控制台
- 异常
-
IllegalFormatException
- 如果格式字符串包含非法语法,格式说明符与给定参数不兼容,给定格式字符串的参数不足或其他非法条件。 有关所有可能的格式错误的说明,请参阅formatter类规范的Details部分。
-
printf
public Console printf(String format, Object... args)
使用指定的格式字符串和参数将格式化字符串写入此控制台输出流的便捷方法。调用
con.printf(format, args)
形式的此方法的行为与调用的方式完全相同con.format(format, args)
。- 参数
-
format
-如在描述的格式字符串 Format string syntax 。 -
args
- 格式字符串中格式说明符引用的参数。 如果参数多于格式说明符,则忽略额外参数。 参数的数量是可变的,可以为零。 参数的最大数量受The Java™ Virtual Machine Specification定义的Java数组的最大维数限制。null
参数上的行为取决于conversion 。 - 结果
- 这个控制台
- 异常
-
IllegalFormatException
- 如果格式字符串包含非法语法,格式说明符与给定参数不兼容,给定格式字符串的参数不足或其他非法条件。 有关所有可能的格式错误的说明,请参阅formatter类规范的Details部分。
-
readLine
public String readLine(String fmt, Object... args)
提供格式化提示,然后从控制台读取单行文本。- 参数
-
fmt
-如在描述的格式字符串 Format string syntax 。 -
args
- 格式字符串中格式说明符引用的参数。 如果参数多于格式说明符,则忽略额外参数。 参数的最大数量受The Java™ Virtual Machine Specification定义的Java数组的最大维数限制。 - 结果
-
包含从控制台读取的行的字符串,不包括任何行终止字符,如果已到达流末尾,
null
。 - 异常
-
IllegalFormatException
- 如果格式字符串包含非法语法,格式说明符与给定参数不兼容,给定格式字符串的参数不足或其他非法条件。 有关所有可能的格式错误的说明,请参阅formatter类规范的Details部分。 -
IOError
- 如果发生I / O错误。
-
readLine
public String readLine()
从控制台读取单行文本。- 结果
-
包含从控制台读取的行的字符串,不包括任何行终止字符,如果已到达流的末尾,
null
。 - 异常
-
IOError
- 如果发生I / O错误。
-
readPassword
public char[] readPassword(String fmt, Object... args)
提供格式化提示,然后从控制台读取密码或密码,并禁用回显。- 参数
-
fmt
- 用于提示文本的格式字符串,如 Format string syntax中所述。 -
args
- 格式字符串中格式说明符引用的参数。 如果参数多于格式说明符,则忽略额外参数。 参数的最大数量受The Java™ Virtual Machine Specification定义的Java数组的最大维数限制。 - 结果
-
包含从控制台读取的密码或密码短语的字符数组,不包括任何行终止字符,如果已到达流末尾,
null
。 - 异常
-
IllegalFormatException
- 如果格式字符串包含非法语法,格式说明符与给定参数不兼容,给定格式字符串的参数不足或其他非法条件。 有关所有可能的格式错误的说明,请参阅formatter类规范的Details部分。 -
IOError
- 如果发生I / O错误。
-
readPassword
public char[] readPassword()
从控制台读取密码或密码,并禁用回显- 结果
-
包含从控制台读取的密码或密码短语的字符数组,不包括任何行终止字符,如果已到达流末尾,
null
。 - 异常
-
IOError
- 如果发生I / O错误。
-
-