- java.lang.Object
-
- java.io.Console
-
- All Implemented Interfaces:
-
Flushable
public final class Console extends Object implements Flushable
访问与当前Java虚拟机关联的基于字符的控制台设备(如果有的话)的方法。虚拟机是否具有控制台取决于底层平台以及虚拟机的调用方式。 如果虚拟机从交互式命令行启动,而不重定向标准输入和输出流,则其控制台将存在,并且通常将连接到启动虚拟机的键盘和显示器。 如果虚拟机是自动启动的,例如由后台作业调度程序启动,则通常不具有控制台。
如果这个虚拟机有一个控制台,那么它由一个这个类的唯一实例表示,可以通过调用
System.console()
方法获得。 如果没有控制台设备可用,则该方法的调用将返回null
。读取和写入操作是同步的,以保证关键操作的原子完成; 因此调用方法
readLine()
,readPassword()
,format()
,printf()
以及读,格式和写在由返回的对象的操作reader()
和writer()
在多线程方案可能阻塞。对
reader()
和writer()
返回的对象调用close()
不会关闭这些对象的底层流。当达到控制台输入流的结尾时,控制台读取方法返回
null
,例如在Windows上通过在Unix或control-Z上键入control-D。 如果以后在控制台的输入设备上输入其他字符,后续读取操作将成功。除非另有说明,否则传递
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
-
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 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
对象。- 结果
- 与此控制台关联的打印作者
-
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
- 如果格式字符串包含非法语法,则与给定参数不兼容的格式说明符,给定格式字符串的参数不足或其他非法条件。 有关所有可能的格式化错误的规范,请参阅格式化程序类规范的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
- 如果格式字符串包含非法语法,则与给定参数不兼容的格式说明符,给定格式字符串的参数不足或其他非法条件。 有关所有可能的格式化错误的规范,请参阅格式化程序类规范的Details部分。
-
readLine
public String readLine(String fmt, Object... args)
提供一个格式化的提示,然后从控制台读取一行文本。- 参数
-
fmt
-如在描述的格式字符串 Format string syntax 。 -
args
- 格式字符串中格式说明符引用的参数。 如果比格式说明符更多的参数,额外的参数将被忽略。 参数的最大数量受限于由The Java™ Virtual Machine Specification定义的Java数组的最大维度。 - 结果
-
包含从控制台读取的行的字符串,不包括任何行终止字符,如果已达到流结尾,
null
。 - 异常
-
IllegalFormatException
- 如果格式字符串包含非法语法,则与给定参数不兼容的格式说明符,给定格式字符串的参数不足或其他非法条件。 有关所有可能的格式化错误的规范,请参阅格式化程序类规范的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
- 如果格式字符串包含非法语法,则与给定参数不兼容的格式说明符,给定格式字符串的参数不足或其他非法条件。 有关所有可能的格式化错误的规范,请参阅格式化程序类规范的Details部分。 -
IOError
- 如果发生I / O错误。
-
readPassword
public char[] readPassword()
从禁用回音的控制台读取密码或密码- 结果
-
包含从控制台读取的密码或密码短语的字符数组,不包括任何行终止字符,如果已达到流结尾,
null
。 - 异常
-
IOError
- 如果发生I / O错误。
-
-