鴻蒙OS Console

2022-10-18 16:49 更新

Console

java.lang.Object

|---java.io.Console

public final class Console
extends Object
implements Flushable

訪問與當(dāng)前 Java 虛擬機(jī)關(guān)聯(lián)的基于字符的控制臺(tái)設(shè)備(如果有)的方法。

虛擬機(jī)是否具有控制臺(tái)取決于底層平臺(tái)以及調(diào)用虛擬機(jī)的方式。 如果虛擬機(jī)從交互式命令行啟動(dòng)而不重定向標(biāo)準(zhǔn)輸入和輸出流,那么它的控制臺(tái)將存在,并且通常會(huì)連接到啟動(dòng)虛擬機(jī)的鍵盤和顯示器。 如果虛擬機(jī)是自動(dòng)啟動(dòng)的,例如通過后臺(tái)作業(yè)調(diào)度程序,那么它通常不會(huì)有控制臺(tái)。

如果這個(gè)虛擬機(jī)有一個(gè)控制臺(tái),那么它由這個(gè)類的一個(gè)唯一實(shí)例表示,可以通過調(diào)用 System.console() 方法獲得。 如果沒有可用的控制臺(tái)設(shè)備,則調(diào)用該方法將返回 null。

讀寫操作同步,保證關(guān)鍵操作的原子完成; 因此,調(diào)用方法 readLine()、readPassword()、format()、printf() 以及對(duì) reader() 和 writer() 返回的對(duì)象的讀取、格式化和寫入操作可能會(huì)在多線程場(chǎng)景中阻塞。

對(duì) reader() 和 writer() 返回的對(duì)象調(diào)用 close() 不會(huì)關(guān)閉這些對(duì)象的底層流。

當(dāng)?shù)竭_(dá)控制臺(tái)輸入流的末尾時(shí),控制臺(tái)讀取方法返回 null,例如通過在 Unix 上鍵入 control-D 或在 Windows 上鍵入 control-Z。 如果稍后在控制臺(tái)的輸入設(shè)備上輸入其他字符,則后續(xù)讀取操作將成功。

除非另有說明,否則將 null 參數(shù)傳遞給此類中的任何方法都將導(dǎo)致拋出 NullPointerException。

安全說明:如果應(yīng)用程序需要讀取密碼或其他安全數(shù)據(jù),則應(yīng)使用 readPassword() 或 readPassword(java.lang.String,java.lang.Object...) 并在處理后手動(dòng)將返回的字符數(shù)組歸零 最小化內(nèi)存中敏感數(shù)據(jù)的生命周期。

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

Since:

1.6

方法總結(jié)

修飾符和類型 方法 描述
void flush() 刷新控制臺(tái)并強(qiáng)制立即寫入任何緩沖的輸出。
Console format(String fmt, Object... args) 使用指定的格式字符串和參數(shù)將格式化字符串寫入此控制臺(tái)的輸出流。
Console printf(String format, Object... args) 使用指定的格式字符串和參數(shù)將格式化字符串寫入此控制臺(tái)的輸出流的便捷方法。
Reader reader() 檢索與此控制臺(tái)關(guān)聯(lián)的唯一 Reader 對(duì)象。
String readLine() 從控制臺(tái)讀取一行文本。
String readLine(String fmt, Object... args) 提供格式化提示,然后從控制臺(tái)讀取一行文本。
char[] readPassword() 從禁用回顯的控制臺(tái)讀取密碼或密碼
char[] readPassword(String fmt, Object... args) 提供格式化提示,然后從禁用回顯的控制臺(tái)讀取密碼或密碼。
PrintWriter writer() 檢索與此控制臺(tái)關(guān)聯(lián)的唯一 PrintWriter 對(duì)象。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

方法詳情

writer

public PrintWriter writer()

檢索與此控制臺(tái)關(guān)聯(lián)的唯一 PrintWriter 對(duì)象。

返回:

與此控制臺(tái)關(guān)聯(lián)的打印機(jī)

reader

public Reader reader()

檢索與此控制臺(tái)關(guān)聯(lián)的唯一 Reader 對(duì)象。

此方法旨在由復(fù)雜的應(yīng)用程序使用,例如,使用 Scanner 提供的豐富解析/掃描功能的 Scanner 對(duì)象:

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

對(duì)于只需要面向行讀取的簡(jiǎn)單應(yīng)用程序,請(qǐng)使用 readLine(java.lang.String, java.lang.Object...)。

對(duì)返回對(duì)象的批量讀取操作 [read(char]) 、 [read(char], int, int) 和 read(java.nio.CharBuffer) 不會(huì)讀取超出每次調(diào)用邊界的字符,即使 目標(biāo)緩沖區(qū)有空間容納更多字符。 如果尚未在控制臺(tái)的輸入設(shè)備上輸入或到達(dá)行邊界,則 Reader 的讀取方法可能會(huì)阻塞。 行邊界被認(rèn)為是換行符('\n')、回車符('\r')、緊跟換行符的回車符或流結(jié)束中的任何一種。

返回:

與此控制臺(tái)關(guān)聯(lián)的閱讀器

format

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

使用指定的格式字符串和參數(shù)將格式化字符串寫入此控制臺(tái)的輸出流。

參數(shù):

參數(shù)名稱 參數(shù)描述
fmt 格式字符串語法中描述的格式字符串
args 格式字符串中的格式說明符引用的參數(shù)。 如果參數(shù)多于格式說明符,則忽略多余的參數(shù)。 參數(shù)的數(shù)量是可變的,可能為零。 參數(shù)的最大數(shù)量受《Java? 虛擬機(jī)規(guī)范》中定義的 Java 數(shù)組的最大維度限制。 空參數(shù)的行為取決于轉(zhuǎn)換。

返回:

這個(gè)控制臺(tái)

Throws:

Throw名稱 Throw描述
IllegalFormatException 如果格式字符串包含非法語法、與給定參數(shù)不兼容的格式說明符、給定格式字符串的參數(shù)不足或其他非法條件。

printf

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

使用指定的格式字符串和參數(shù)將格式化字符串寫入此控制臺(tái)的輸出流的便捷方法。

調(diào)用 con.printf(format, args) 形式的此方法的行為與調(diào)用

con.format(format, args)

參數(shù):

參數(shù)名稱 參數(shù)描述
format 格式字符串語法中描述的格式字符串。
args 格式字符串中的格式說明符引用的參數(shù)。 如果參數(shù)多于格式說明符,則忽略多余的參數(shù)。 參數(shù)的數(shù)量是可變的,可能為零。 參數(shù)的最大數(shù)量受《Java? 虛擬機(jī)規(guī)范》中定義的 Java 數(shù)組的最大維度限制。 空參數(shù)的行為取決于轉(zhuǎn)換。

返回:

這個(gè)控制臺(tái)

Throws:

Throw名稱 Throw描述
IllegalFormatException 如果格式字符串包含非法語法、與給定參數(shù)不兼容的格式說明符、給定格式字符串的參數(shù)不足或其他非法條件。

readLine

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

提供格式化提示,然后從控制臺(tái)讀取一行文本。

參數(shù):

參數(shù)名稱 參數(shù)描述
fmt 格式字符串語法中描述的格式字符串。
args 格式字符串中的格式說明符引用的參數(shù)。 如果參數(shù)多于格式說明符,則忽略多余的參數(shù)。 參數(shù)的最大數(shù)量受《Java? 虛擬機(jī)規(guī)范》中定義的 Java 數(shù)組的最大維度限制。

返回:

包含從控制臺(tái)讀取的行的字符串,不包括任何行終止字符,如果已到達(dá)流的結(jié)尾,則為 null。

Throws:

Throw名稱 Throw描述
IllegalFormatException 如果格式字符串包含非法語法、與給定參數(shù)不兼容的格式說明符、給定格式字符串的參數(shù)不足或其他非法條件。
IOError 如果發(fā)生 I/O 錯(cuò)誤。

readLine

public String readLine()

從控制臺(tái)讀取一行文本。

返回:

包含從控制臺(tái)讀取的行的字符串,不包括任何行終止字符,如果已到達(dá)流的結(jié)尾,則為 null。

Throws:

Throw名稱 Throw描述
IOError 如果發(fā)生 I/O 錯(cuò)誤。

readPassword

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

提供格式化提示,然后從禁用回顯的控制臺(tái)讀取密碼或密碼。

參數(shù):

參數(shù)名稱 參數(shù)描述
fmt 提示文本的格式字符串語法中所述的格式字符串。
args 格式字符串中的格式說明符引用的參數(shù)。 如果參數(shù)多于格式說明符,則忽略多余的參數(shù)。 參數(shù)的最大數(shù)量受《Java? 虛擬機(jī)規(guī)范》中定義的 Java 數(shù)組的最大維度限制。

返回:

包含從控制臺(tái)讀取的密碼或密碼短語的字符數(shù)組,不包括任何行終止字符,如果已到達(dá)流的結(jié)尾,則為 null。

Throws:

Throw名稱 Throw描述
IllegalFormatException 如果格式字符串包含非法語法、與給定參數(shù)不兼容的格式說明符、給定格式字符串的參數(shù)不足或其他非法條件。
IOError 如果發(fā)生 I/O 錯(cuò)誤。

readPassword

public char[] readPassword()

從禁用回顯的控制臺(tái)讀取密碼或密碼

返回:

包含從控制臺(tái)讀取的密碼或密碼短語的字符數(shù)組,不包括任何行終止字符,如果已到達(dá)流的結(jié)尾,則為 null。

Throws:

Throw名稱 Throw描述
IOError 如果發(fā)生 I/O 錯(cuò)誤。

flush

public void flush()

刷新控制臺(tái)并強(qiáng)制立即寫入任何緩沖的輸出。

指定者:

在接口 Flushable 中刷新

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)