public final class Console extends Object implements Flushable
仮想マシンにコンソールがあるかどうかは、ベースとなるオペレーティング・システムと、仮想マシンが呼び出される方法によって決まります。標準入力および出力のストリームをリダイレクトせずに、対話型のコマンド行から仮想マシンを起動する場合は、コンソールが存在し、通常そのコンソールは仮想マシンを起動したキーボードおよびディスプレイに接続されます。バックグラウンドのジョブ・スケジューラなどによって仮想マシンが自動的に起動される場合、通常はコンソールがありません。
この仮想マシンにコンソールがある場合、そのコンソールは、System.console()
メソッドを呼び出すことで取得できるこのクラスの一意のインスタンスによって表されます。コンソール・デバイスが利用できない場合、メソッドの呼出しはnullを返します。
読み込みと書込みの操作は同期されるため、クリティカルな操作を不可分(atomic)に完了することができます。そのため、マルチ・スレッド化されたシナリオでは、readLine()
、readPassword()
、format()
、printf()
の各メソッドの呼び出しや、reader()
およびwriter()
で返されるオブジェクトでの読み込み、フォーマット、書込みの操作がブロックすることがあります。
reader()
およびwriter()
によって返されるオブジェクトに対してclose()を呼び出しても、それらのオブジェクトのベースとなるストリームは閉じられません。
たとえばControl+Dキー(Unixの場合)またはControl+Zキー(Windowsの場合)を入力して、コンソールの入力ストリームの最後に達すると、コンソールの読込みメソッドは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, ' '); }
修飾子と型 | メソッドと説明 |
---|---|
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 オブジェクトを取得します。 |
public PrintWriter writer()
PrintWriter
オブジェクトを取得します。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')、復帰と改行の組み合わせ、またはストリームの終わりのいずれかであるとみなされます。
public Console format(String fmt, Object... args)
fmt
- 「書式文字列の構文」で説明した書式文字列args
- 書式文字列の書式指示子により参照される引数。書式指示子よりも引数が多い場合、余分な引数は無視される。引数の数は変動し、ゼロの場合もある。引数の最大数は、Java(tm)仮想マシン仕様で定義されているJava配列の最大次元により制限される。引数がnullの場合、動作は変換に応じて異なる。IllegalFormatException
- 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。考えられるすべての書式エラーの仕様については、フォーマッタ・クラス仕様の「詳細」セクションを参照。public Console printf(String format, Object... args)
このメソッドをcon.printf(format, args)の形式で呼び出した場合、次の呼び出しと同じ結果が得られます。
con.format(format, args).
format
- 「書式文字列の構文」で説明した書式文字列。args
- 書式文字列の書式指示子により参照される引数。書式指示子よりも引数が多い場合、余分な引数は無視される。引数の数は変動し、ゼロの場合もある。引数の最大数は、Java(tm)仮想マシン仕様で定義されているJava配列の最大次元により制限される。引数がnullの場合、動作は変換に応じて異なる。IllegalFormatException
- 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。考えられるすべての書式エラーの仕様については、フォーマッタ・クラス仕様の「詳細」セクションを参照。public String readLine(String fmt, Object... args)
fmt
- 「書式文字列の構文」で説明した書式文字列。args
- 書式文字列の書式指示子により参照される引数。書式指示子よりも引数が多い場合、余分な引数は無視される。引数の最大数は、Java(tm)仮想マシン仕様で定義されているJava配列の最大次元により制限される。IllegalFormatException
- 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。考えられるすべての書式エラーの仕様については、フォーマッタ・クラス仕様の「詳細」セクションを参照。IOError
- 入出力エラーが発生した場合。public String readLine()
IOError
- 入出力エラーが発生した場合。public char[] readPassword(String fmt, Object... args)
fmt
- 「書式文字列の構文」で説明した、プロンプト・テキストの書式文字列。args
- 書式文字列の書式指示子により参照される引数。書式指示子よりも引数が多い場合、余分な引数は無視される。引数の最大数は、Java(tm)仮想マシン仕様で定義されているJava配列の最大次元により制限される。IllegalFormatException
- 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。考えられるすべての書式エラーの仕様については、フォーマッタ・クラス仕様の「詳細」セクションを参照。IOError
- 入出力エラーが発生した場合。public char[] readPassword()
IOError
- 入出力エラーが発生した場合。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.