クラスConsole
- すべての実装されたインタフェース:
Flushable
仮想マシンにコンソールがあるかどうかは、ベースとなるオペレーティング・システムと、仮想マシンが呼び出される方法によって決まります。 標準入力および出力のストリームをリダイレクトせずに、対話型のコマンド行から仮想マシンを起動する場合は、コンソールが存在し、通常そのコンソールは仮想マシンを起動したキーボードおよびディスプレイに接続されます。 たとえば、バックグラウンド・ジョブ・スケジューラによって仮想マシンが自動的に起動された場合、コンソールがない可能性があります。
この仮想マシンにコンソールがある場合、そのコンソールは、System.console()
メソッドを呼び出すことで取得できるこのクラスの一意のインスタンスによって表されます。 使用可能なコンソール・デバイスがない場合は、そのメソッドの起動によってnull
が返されます。
読み込みと書込みの操作は同期されるため、クリティカルな操作を不可分(atomic)に完了することができます。そのため、マルチ・スレッド化されたシナリオでは、readLine()
、readPassword()
、format()
、printf()
の各メソッドの呼び出しや、reader()
およびwriter()
で返されるオブジェクトでの読み込み、フォーマット、書込みの操作がブロックすることがあります。
文字列をフォーマットする操作は、指定したLocale
またはdefault format Locale
を使用してローカライズされたフォーマット文字列を生成し、ロケールに依存します。
reader()
およびwriter()
によって返されるオブジェクトに対してclose()
を起動しても、これらのオブジェクトの基礎となるストリームは閉じられません。
console-readメソッドは、たとえばUnixにcontrol-Dを入力したり、Windowsにcontrol-Zを入力することで、コンソール入力ストリームの終わりに達するとnull
を返します。 その後、コンソールの入力デバイスで追加の文字が入力されると、それ以降の読込み操作は成功します。
特に指定しないかぎり、このクラスのメソッドにnull
引数を渡すと、NullPointerException
がスローされます。
セキュリティ上のノート: アプリケーションでパスワードやその他のセキュリティ保護されたデータを読み込む必要がある場合、readPassword()
またはreadPassword(String, Object...)
を使用し、機密データがメモリーに存続する期間を最小限に抑えるために、処理が終わったら返される文字配列に手動で0を設定することをお薦めします。
Console cons;
char[] passwd;
if ((cons = System.console()) != null &&
(passwd = cons.readPassword("[%s]", "Password:")) != null) {
...
java.util.Arrays.fill(passwd, ' ');
}
- 導入されたバージョン:
- 1.6
-
メソッドのサマリー
修飾子と型メソッド説明charset()
Console
に使用されるCharset
オブジェクトを返します。void
flush()
コンソールをフラッシュし、バッファされた出力がすぐに書き込まれるようにします。指定された書式文字列および引数をdefault format locale
とともに使用して、書式付き文字列をこのコンソールの出力ストリームに書き込みます。指定された書式文字列と、指定されたlocale
の引数を使用して、書式付き文字列をこのコンソールの出力ストリームに書き込みます。boolean
Console
インスタンスが端末の場合、true
を返します。Preview.指定されたオブジェクトの文字列表現をこのコンソールの出力ストリームに書き込み、コンソールをフラッシュします。指定された書式文字列および引数をdefault format locale
とともに使用して、書式付き文字列をこのコンソールの出力ストリームに書き込む便利なメソッド。指定されたlocale
で指定された書式文字列と引数を使用して、書式付き文字列をこのコンソールの出力ストリームに書き込む便利なメソッド。Preview.指定されたオブジェクトの文字列表現をこのコンソールの出力ストリームに書き込み、System.lineSeparator()
を使用して行を終了し、コンソールをフラッシュします。reader()
このコンソールに関連付けられている一意のReader
オブジェクトを取得します。readLine()
コンソールから単一行のテキストを読み込みます。default format locale
を使用して書式設定されたプロンプトを提供し、コンソールから1行のテキストを読み取ります。指定されたlocale
を使用して書式設定されたプロンプトを提供し、コンソールからテキストの1行を読み取ります。Preview.print
を呼び出すかのようにプロンプトを書き込み、このコンソールから1行のテキストを読み取ります。char[]
エコーを無効にしたコンソールからパスワードまたはパス・フレーズを読み込みます。char[]
readPassword
(String format, Object... args) default format locale
を使用してフォーマットされたプロンプトを提供し、エコーを無効にしてコンソールからパスワードまたはパスフレーズを読み取ります。char[]
readPassword
(Locale locale, String format, Object... args) 指定されたlocale
を使用してフォーマットされたプロンプトを提供し、エコーを無効にしてコンソールからパスワードまたはパスフレーズを読み取ります。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'
)、直後に行送りが続くキャリッジ・リターン、またはストリームの終端のいずれかであるとみなされます。- 戻り値:
- このコンソールに関連付けられているReader
-
println
println
は、JavaプラットフォームのプレビューAPIです。プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。指定されたオブジェクトの文字列表現をこのコンソールの出力ストリームに書き込み、System.lineSeparator()
を使用して行を終了し、コンソールをフラッシュします。指定されたオブジェクトの文字列表現は、
String.valueOf(Object)
を呼び出した場合と同様に取得されます。- パラメータ:
obj
- 文字列表現を記述するオブジェクトは、null
です。- 戻り値:
- このコンソール
- 導入されたバージョン:
- 23
-
print
print
は、JavaプラットフォームのプレビューAPIです。プレビュー機能が有効な場合のみ、プログラムでprint
を使用できます。プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。指定されたオブジェクトの文字列表現をこのコンソールの出力ストリームに書き込み、コンソールをフラッシュします。指定されたオブジェクトの文字列表現は、
String.valueOf(Object)
を呼び出した場合と同様に取得されます。- パラメータ:
obj
- 文字列表現を記述するオブジェクトは、null
です。- 戻り値:
- このコンソール
- 導入されたバージョン:
- 23
-
readln
readln
は、JavaプラットフォームのプレビューAPIです。プレビュー機能が有効な場合のみ、プログラムでreadln
を使用できます。プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。print
を呼び出すかのようにプロンプトを書き込み、このコンソールから1行のテキストを読み取ります。- パラメータ:
prompt
- プロンプト文字列は、null
です。- 戻り値:
- コンソールから読み取られた行を含む文字列。行末文字は含まれません。ストリームの最後に文字を読み取らずに到達した場合は、
null
。 - 例外:
IOError
- 入出力エラーが発生した場合。- 導入されたバージョン:
- 23
-
format
指定された書式文字列および引数をdefault format locale
とともに使用して、書式付き文字列をこのコンソールの出力ストリームに書き込みます。- パラメータ:
format
-Format string syntax
で説明されている書式文字列。args
- 書式文字列の書式指示子により参照される引数。 引数が書式指定子よりも多い場合、余分な引数は無視されます。 引数の数は変数で、0(ゼロ)の場合があります。 引数の最大数は、「Java Virtual Machine仕様」で定義されているJava配列の最大サイズによって制限されます。null
引数の動作は、conversion
によって異なります。- 戻り値:
- このコンソール
- 例外:
IllegalFormatException
- 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。 可能性のあるすべての書式設定エラーについては、フォーマッタ・クラスの指定のDetails
の項を参照してください。
-
format
指定された書式文字列と、指定されたlocale
の引数を使用して、書式付き文字列をこのコンソールの出力ストリームに書き込みます。- パラメータ:
locale
- フォーマット時に適用する「ロケール」。locale
がnull
の場合、ローカリゼーションは適用されません。format
-Format string syntax
で説明されている書式文字列。args
- 書式文字列の書式指示子により参照される引数。 引数が書式指定子よりも多い場合、余分な引数は無視されます。 引数の数は変数で、0(ゼロ)の場合があります。 引数の最大数は、「Java Virtual Machine仕様」で定義されているJava配列の最大サイズによって制限されます。null
引数の動作は、conversion
によって異なります。- 戻り値:
- このコンソール
- 例外:
IllegalFormatException
- 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。 可能性のあるすべての書式設定エラーについては、フォーマッタ・クラスの指定のDetails
の項を参照してください。- 導入されたバージョン:
- 23
-
printf
指定された書式文字列および引数をdefault format locale
とともに使用して、書式付き文字列をこのコンソールの出力ストリームに書き込む便利なメソッド。- 実装要件:
- これは、
format(format, args)
のコールと同じです。 - パラメータ:
format
-Format string syntax
で説明されている書式文字列。args
- 書式文字列の書式指示子により参照される引数。 引数が書式指定子よりも多い場合、余分な引数は無視されます。 引数の数は変数で、0(ゼロ)の場合があります。 引数の最大数は、「Java Virtual Machine仕様」で定義されているJava配列の最大サイズによって制限されます。null
引数の動作は、conversion
によって異なります。- 戻り値:
- このコンソール
- 例外:
IllegalFormatException
- 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。 可能性のあるすべての書式設定エラーについては、フォーマッタ・クラスの指定のDetails
の項を参照してください。
-
printf
指定されたlocale
で指定された書式文字列と引数を使用して、書式付き文字列をこのコンソールの出力ストリームに書き込む便利なメソッド。- 実装要件:
- これは、
format(locale, format, args)
のコールと同じです。 - パラメータ:
locale
- フォーマット時に適用する「ロケール」。locale
がnull
の場合、ローカリゼーションは適用されません。format
-Format string syntax
で説明されている書式文字列。args
- 書式文字列の書式指示子により参照される引数。 引数が書式指定子よりも多い場合、余分な引数は無視されます。 引数の数は変数で、0(ゼロ)の場合があります。 引数の最大数は、「Java Virtual Machine仕様」で定義されているJava配列の最大サイズによって制限されます。null
引数の動作は、conversion
によって異なります。- 戻り値:
- このコンソール
- 例外:
IllegalFormatException
- 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。 可能性のあるすべての書式設定エラーについては、フォーマッタ・クラスの指定のDetails
の項を参照してください。- 導入されたバージョン:
- 23
-
readLine
default format locale
を使用して書式設定されたプロンプトを提供し、コンソールから1行のテキストを読み取ります。- パラメータ:
format
-Format string syntax
で説明されている書式文字列。args
- 書式文字列の書式指示子により参照される引数。 引数が書式指定子よりも多い場合、余分な引数は無視されます。 引数の数は変数で、0(ゼロ)の場合があります。 引数の最大数は、「Java Virtual Machine仕様」で定義されているJava配列の最大サイズによって制限されます。null
引数の動作は、conversion
によって異なります。- 戻り値:
- コンソールから読み取られた行を含む文字列で、行終了文字は含まれません。ストリームの終わりに達した場合は
null
です。 - 例外:
IllegalFormatException
- 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。 可能性のあるすべての書式設定エラーについては、フォーマッタ・クラスの指定のDetails
の項を参照してください。IOError
- 入出力エラーが発生した場合。
-
readLine
指定されたlocale
を使用して書式設定されたプロンプトを提供し、コンソールからテキストの1行を読み取ります。- パラメータ:
locale
- フォーマット時に適用する「ロケール」。locale
がnull
の場合、ローカリゼーションは適用されません。format
-Format string syntax
で説明されている書式文字列。args
- 書式文字列の書式指示子により参照される引数。 引数が書式指定子よりも多い場合、余分な引数は無視されます。 引数の数は変数で、0(ゼロ)の場合があります。 引数の最大数は、「Java Virtual Machine仕様」で定義されているJava配列の最大サイズによって制限されます。null
引数の動作は、conversion
によって異なります。- 戻り値:
- コンソールから読み取られた行を含む文字列で、行終了文字は含まれません。ストリームの終わりに達した場合は
null
です。 - 例外:
IllegalFormatException
- 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。 可能性のあるすべての書式設定エラーについては、フォーマッタ・クラスの指定のDetails
の項を参照してください。IOError
- 入出力エラーが発生した場合。- 導入されたバージョン:
- 23
-
readLine
-
readPassword
default format locale
を使用してフォーマットされたプロンプトを提供し、エコーを無効にしてコンソールからパスワードまたはパスフレーズを読み取ります。- パラメータ:
format
- プロンプト・テキストの書式文字列(Format string syntax
を参照)。args
- 書式文字列の書式指示子により参照される引数。 引数が書式指定子よりも多い場合、余分な引数は無視されます。 引数の数は変数で、0(ゼロ)の場合があります。 引数の最大数は、「Java Virtual Machine仕様」で定義されているJava配列の最大サイズによって制限されます。null
引数の動作は、conversion
によって異なります。- 戻り値:
- コンソールから読み取られたパスワードまたはパスフレーズを含む文字配列。行終了文字は含めません。ストリームの終わりに達した場合は
null
になります。 - 例外:
IllegalFormatException
- 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。 可能性のあるすべての書式設定エラーについては、フォーマッタ・クラスの指定のDetails
の項を参照してください。IOError
- 入出力エラーが発生した場合。
-
readPassword
指定されたlocale
を使用してフォーマットされたプロンプトを提供し、エコーを無効にしてコンソールからパスワードまたはパスフレーズを読み取ります。- パラメータ:
locale
- フォーマット時に適用する「ロケール」。locale
がnull
の場合、ローカリゼーションは適用されません。format
- プロンプト・テキストの書式文字列(Format string syntax
を参照)。args
- 書式文字列の書式指示子により参照される引数。 引数が書式指定子よりも多い場合、余分な引数は無視されます。 引数の数は変数で、0(ゼロ)の場合があります。 引数の最大数は、「Java Virtual Machine仕様」で定義されているJava配列の最大サイズによって制限されます。null
引数の動作は、conversion
によって異なります。- 戻り値:
- コンソールから読み取られたパスワードまたはパスフレーズを含む文字配列。行終了文字は含めません。ストリームの終わりに達した場合は
null
になります。 - 例外:
IllegalFormatException
- 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。 可能性のあるすべての書式設定エラーについては、フォーマッタ・クラスの指定のDetails
の項を参照してください。IOError
- 入出力エラーが発生した場合。- 導入されたバージョン:
- 23
-
readPassword
public char[] readPassword()エコーを無効にしたコンソールからパスワードまたはパス・フレーズを読み込みます。- 戻り値:
- コンソールから読み取られたパスワードまたはパスフレーズを含む文字配列。行終了文字は含めません。ストリームの終わりに達した場合は
null
になります。 - 例外:
IOError
- 入出力エラーが発生した場合。
-
flush
-
charset
public Charset charset()Console
に使用されるCharset
オブジェクトを返します。返される文字セットは、ホスト環境またはユーザーが指定した入力および出力ソース(例:キーボード/ディスプレイ)に対応します。
Charset.defaultCharset()
から返されるデフォルトの文字セットとは異なる場合があります。- 戻り値:
Console
に使用されるCharset
オブジェクト- 導入されたバージョン:
- 17
-
isTerminal
public boolean isTerminal()Console
インスタンスが端末の場合、true
を返します。このメソッドは、現在のJava仮想マシンに関連付けられているコンソール・デバイスが端末(通常はキーボードとディスプレイに接続された対話型コマンドライン)である場合に
true
を返します。- 実装上のノート:
- デフォルトの実装では、POSIXプラットフォームで
isatty(stdin/stdout)
をコールすることと同等の値、または標準のin/outファイル記述子が文字型デバイスかどうかがWindowsで返されます。 - 戻り値:
Console
インスタンスが端末の場合はtrue
- 導入されたバージョン:
- 22
-
println
を使用できます。