JavaTM 2 Platform
Standard Ed. 6

java.io
類別 Console

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() 不會關閉這些物件的底層串流。

在到達終端機輸入串流的尾部時,如鍵入 control-D (Unix) 或鍵入 control-Z (Windows),讀取終端機的方法將返回 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 物件。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法詳細資訊

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) 不會讀入行邊界之外的字元,即使目標緩衝區還有可容納更多字元的空間。下列字元之一被認為是行邊界:換行 ('\n')、回車(Enter) ('\r')、回車(Enter)後緊跟換行,或者串流末尾。

返回:
與此終端機關聯的 reader

format

public Console format(String fmt,
                      Object... args)
使用指定格式字元串和參數將格式化字元串寫入此終端機的輸出串流中。

參數:
fmt - 格式字元串語法中描述的格式字元串
args - 格式字元串中的格式說明符參考的參數。如果參數多於格式說明符,則忽略額外的參數。參數的數量是可變的,並且可以為零。參數的最大數量受到 Java 虛擬機器規範定義的 Java 陣列最大維數的限制。null 參數的行為取決於轉換
返回:
此終端機
拋出:
IllegalFormatException - 如果格式字元串包含非法語法、與給定參數不相容的格式說明符、對給定格式字元串而言不夠的參數或其他非法條件。有關所有可能的格式錯誤的規範,請參閱 formatter 類別規範的詳細資訊部分。

printf

public Console printf(String format,
                      Object... args)
使用指定格式字元串和參數將格式化字元串寫入此終端機輸出串流的便捷方法。

此方法 con.printf(format, args) 形式的調用與以下調用的行為完全相同:

con.format(format, args)
.

參數:
format - 格式字元串語法中描述的格式字元串。
args - 格式字元串中的格式說明符參考的參數。如果參數多於格式說明符,則忽略額外的參數。參數的數量是可變的,並且可以為零。參數的最大數量受到 Java 虛擬機器規範定義的 Java 陣列最大維數的限制。null 參數的行為取決於轉換
返回:
此終端機
拋出:
IllegalFormatException - 如果格式字元串包含非法語法、與給定參數不相容的格式說明符、對給定格式字元串而言不夠的參數或其他非法條件。有關所有可能的格式錯誤的規範,請參閱 formatter 類別規範的詳細資訊部分。

readLine

public String readLine(String fmt,
                       Object... args)
提供一個格式化提示,然後從終端機讀取單行文本。

參數:
fmt - 格式字元串語法中描述的格式字元串。
args - 格式字元串中的格式說明符參考的參數。如果參數多於格式說明符,則忽略額外的參數。參數的最大數量受到 Java 虛擬機器規範定義的 Java 陣列最大維數的限制。
返回:
包含從終端機讀取的行的字元串,該字元串不包含任何行終止符;如果已到達串流的末尾,則返回 null
拋出:
IllegalFormatException - 如果格式字元串包含非法語法、與給定參數不相容的格式說明符、對給定格式字元串而言不夠的參數或其他非法條件。有關所有可能的格式錯誤的規範,請參閱 formatter 類別規範的詳細資訊部分。
IOError - 如果發生 I/O 錯誤。

readLine

public String readLine()
從終端機讀取單行文本。

返回:
包含從終端機讀取的行的字元串,該字元串不包含任何行終止符;如果已到達串流的末尾,則返回 null
拋出:
IOError - 如果發生 I/O 錯誤。

readPassword

public char[] readPassword(String fmt,
                           Object... args)
提供一個格式化提示,然後從終端機讀取密碼,禁用回顯。

參數:
fmt - 提示文本的格式字元串語法中描述的格式字元串。
args - 格式字元串中的格式說明符參考的參數。如果參數多於格式說明符,則忽略額外的參數。參數的最大數量受到 Java 虛擬機器規範定義的 Java 陣列最大維數的限制。
返回:
包含從終端機讀取的密碼的字元陣列,該字元陣列不包含任何行終止符;如果已到達串流的末尾,則返回 null
拋出:
IllegalFormatException - 如果格式字元串包含非法語法、與給定參數不相容的格式說明符、對給定格式字元串而言不夠的參數或其他非法條件。有關所有可能的格式錯誤的規範,請參閱 formatter 類別規範的詳細資訊部分。
IOError - 如果發生 I/O 錯誤。

readPassword

public char[] readPassword()
從終端機讀取密碼,禁用回顯。

返回:
包含從終端機讀取的密碼的字元陣列,該字元陣列不包含任何行終止符;如果已到達串流的末尾,則返回 null
拋出:
IOError - 如果發生 I/O 錯誤。

flush

public void flush()
刷新終端機,並強制立即寫入所有緩衝的輸出。

指定者:
介面 Flushable 中的 flush

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only