クラスConsole
- すべての実装されたインタフェース:
Flushable
仮想マシンのコンソールが存在するかどうかは、基礎となるプラットフォームおよび仮想マシンの起動方法に依存します。 仮想マシンが標準の入出力ストリームをリダイレクトせずに対話型のコマンドラインから起動された場合、そのコンソールは一般に存在し、仮想マシンが起動されたキーボードとディスプレイに接続されます。 標準入力または標準出力が(たとえば、ファイルまたはパイプに)リダイレクトされた場合、または仮想マシンがバックグラウンドジョブスケジューラから起動された場合、コンソールは存在しません。
コンソールが存在する場合は、このクラスの一意のインスタンスで表され、System.console()メソッドを呼び出して取得できます。 コンソールが存在しない場合、そのメソッドはnullを返します。
読み込みと書込みの操作は同期されるため、クリティカルな操作を不可分(atomic)に完了することができます。そのため、マルチ・スレッド化されたシナリオでは、readLine()、readPassword()、format()、printf()の各メソッドの呼び出しや、reader()およびwriter()で返されるオブジェクトでの読み込み、フォーマット、書込みの操作がブロックすることがあります。
読取りおよび書込み操作では、stdin.encodingおよびstdout.encodingで指定されたCharsetがそれぞれ使用されます。 書込み操作に使用されるCharsetは、charset()メソッドを使用して取得することもできます。 Consoleは端末での対話的な使用を目的としているため、これらの文字セットは通常同じです。
文字列をフォーマットする操作は、指定した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オブジェクトを返します。voidflush()コンソールをフラッシュし、バッファされた出力がすぐに書き込まれるようにします。指定された書式文字列および引数をdefault format localeとともに使用して、書式付き文字列をこのコンソールの出力ストリームに書き込みます。指定された書式文字列と、指定されたlocaleの引数を使用して、書式付き文字列をこのコンソールの出力ストリームに書き込みます。booleanConsoleインスタンスが端末の場合、trueを返します。指定された書式文字列および引数をdefault format localeとともに使用して、書式付き文字列をこのコンソールの出力ストリームに書き込む便利なメソッド。指定されたlocaleで指定された書式文字列と引数を使用して、書式付き文字列をこのコンソールの出力ストリームに書き込む便利なメソッド。reader()このコンソールに関連付けられている一意のReaderオブジェクトを取得します。readLine()コンソールから単一行のテキストを読み込みます。default format localeを使用して書式設定されたプロンプトを提供し、コンソールから1行のテキストを読み取ります。指定されたlocaleを使用して書式設定されたプロンプトを提供し、コンソールからテキストの1行を読み取ります。char[]エコーを無効にしたコンソールからパスワードまたはパス・フレーズを読み込みます。char[]readPassword(String format, Object... args) default format localeを使用してフォーマットされたプロンプトを提供し、エコーを無効にしてコンソールからパスワードまたはパスフレーズを読み取ります。char[]readPassword(Locale locale, String format, Object... args) 指定されたlocaleを使用してフォーマットされたプロンプトを提供し、エコーを無効にしてコンソールからパスワードまたはパスフレーズを読み取ります。writer()このコンソールに関連付けられている一意のPrintWriterオブジェクトを取得します。クラスオブジェクトで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait修飾子と型メソッド説明protected Objectclone()このオブジェクトのコピーを作成して、返します。booleanこのオブジェクトと他のオブジェクトが等しいかどうかを示します。protected voidfinalize()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は非推奨であり、将来のリリースで削除される可能性があります。final Class<?> getClass()このObjectの実行時クラスを返します。inthashCode()このオブジェクトに対するハッシュ・コード値を返します。final voidnotify()このオブジェクトのモニターで待機中のスレッドを1つ再開します。final voidこのオブジェクトのモニターで待機中のすべてのスレッドを再開します。toString()オブジェクトの文字列表現を返します。final voidwait()現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。final voidwait(long timeoutMillis) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。final voidwait(long timeoutMillis, int nanos) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
-
メソッドの詳細
-
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(String, Object...)を使用します。返されるオブジェクトでの一括読込み操作
read(char[])、read(char[], int, int)、およびread(java.nio.CharBuffer)では、転送先バッファにより多くの文字を格納する領域がある場合でも、行の境界を越えて文字を読み込むことはありません。Readerのreadメソッドでは、コンソールの入力デバイスで行の境界が入力されずに到達しない場合にブロックされることがあります。 行境界は、行送り ('\n')、キャリッジ・リターン ('\r')、直後に行送りが続くキャリッジ・リターン、またはストリームの終端のいずれかであるとみなされます。- 戻り値:
- このコンソールに関連付けられているReader
-
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オブジェクトを返します。返される文字セットは、ホスト環境またはユーザーが指定した出力(表示など)に送信されるデータのエンコーディングに使用されます。 デフォルトは
stdout.encodingに基づくものであり、必ずしもCharset.defaultCharset()から返されるデフォルトの文字セットと同じであるとは限りません。- 戻り値:
- この
Consoleに対する書込み操作に使用されるCharsetオブジェクト - 導入されたバージョン:
- 17
-
isTerminal
public boolean isTerminal()Consoleインスタンスが端末の場合、trueを返します。System.console()がConsoleインスタンスを提供するのは、標準入力と出力の両方のリダイレクトが解除されている場合、つまり対話型端末で実行されている場合のみであるため、このメソッドは常にtrueを返します。- 戻り値:
Consoleインスタンスが端末の場合はtrue- 導入されたバージョン:
- 22
-