JavaTM 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 を返します。

読み込みと書き込みの操作は同期されるため、クリティカルな操作を不可分 (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, ' ');
 }
 

導入されたバージョン:
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 オブジェクトを取得します。

戻り値:
このコンソールに関連付けられた PrinterWriter

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')、キャリッジリターン ('\r')、キャリッジリターンと改行の組み合わせ、またはストリームの終わりのいずれかであるとみなされます。

戻り値:
このコンソールに関連付けられた Reader

format

public Console format(String fmt,
                      Object... args)
指定された書式文字列および引数を使用して、書式付き文字列をこのコンソールの出力ストリームに書き込みます。

パラメータ:
fmt - 「書式文字列の構文」で説明した書式文字列
args - 書式文字列の書式指示子により参照される引数。書式指示子よりも引数が多い場合、余分な引数は無視される。引数の数は変動し、ゼロの場合もある。引数の最大数は、Java 仮想マシン仕様で定義されている Java 配列の最大次元により制限される。引数が null の場合、動作は変換に応じて異なる
戻り値:
このコンソール
例外:
IllegalFormatException - 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に与えられた不適切な引数、あるいはほかの不正な条件を含む場合。考えられるすべての書式エラーの仕様については、フォーマッタクラス仕様の「詳細」セクションを参照

printf

public Console printf(String format,
                      Object... args)
指定された書式文字列および引数を使用して、書式付き文字列をこのコンソールの出力ストリームに書き込む簡易メソッドです。  

このメソッドを con.printf(format, args) の形式で呼び出した場合、次の呼び出しと同じ結果が得られます。 

con.format(format, args)
.

パラメータ:
format - 「書式文字列の構文」で説明した書式文字列
args - 書式文字列の書式指示子により参照される引数。書式指示子よりも引数が多い場合、余分な引数は無視される。引数の数は変動し、ゼロの場合もある。引数の最大数は、Java 仮想マシン仕様で定義されている Java 配列の最大次元により制限される。引数が null の場合、動作は変換に応じて異なる
戻り値:
このコンソール
例外:
IllegalFormatException - 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に与えられた不適切な引数、あるいはほかの不正な条件を含む場合。考えられるすべての書式エラーの仕様については、フォーマッタクラス仕様の「詳細」セクションを参照

readLine

public String readLine(String fmt,
                       Object... args)
書式設定されたプロンプトを提供し、次にコンソールから単一行のテキストを読み込みます。

パラメータ:
fmt - 「書式文字列の構文」で説明した書式文字列
args - 書式文字列の書式指示子により参照される引数。書式指示子よりも引数が多い場合、余分な引数は無視される。引数の最大数は、Java 仮想マシン仕様で定義されている Java 配列の最大次元により制限される。
戻り値:
コンソールから読み込んだ行を含む文字列、ただし行の終端文字は含めない。ストリームの終わりに達している場合は null
例外:
IllegalFormatException - 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に与えられた不適切な引数、あるいはほかの不正な条件を含む場合。考えられるすべての書式エラーの仕様については、フォーマッタクラス仕様の「詳細」セクションを参照
IOError - 入出力エラーが発生した場合

readLine

public String readLine()
コンソールから単一行のテキストを読み込みます。

戻り値:
コンソールから読み込んだ行を含む文字列、ただし行の終端文字は含めない。ストリームの終わりに達している場合は null
例外:
IOError - 入出力エラーが発生した場合

readPassword

public char[] readPassword(String fmt,
                           Object... args)
書式設定されたプロンプトを提供し、次にエコーを無効にしたコンソールからパスワードまたはパスフレーズを読み込みます。

パラメータ:
fmt - 「書式文字列の構文」で説明した、プロンプトテキストの書式文字列
args - 書式文字列の書式指示子により参照される引数。書式指示子よりも引数が多い場合、余分な引数は無視される。引数の最大数は、Java 仮想マシン仕様で定義されている Java 配列の最大次元により制限される。
戻り値:
コンソールから読み込んだパスワードまたはパスフレーズを含む文字配列、ただし行の終端文字は含めない。ストリームの終わりに達している場合は null
例外:
IllegalFormatException - 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に与えられた不適切な引数、あるいはほかの不正な条件を含む場合。考えられるすべての書式エラーの仕様については、フォーマッタクラス仕様の「詳細」セクションを参照
IOError - 入出力エラーが発生した場合

readPassword

public char[] readPassword()
エコーを無効にしたコンソールからパスワードまたはパスフレーズを読み込みます。

戻り値:
コンソールから読み込んだパスワードまたはパスフレーズを含む文字配列、ただし行の終端文字は含めない。ストリームの終わりに達している場合は null
例外:
IOError - 入出力エラーが発生した場合

flush

public void flush()
コンソールをフラッシュして、バッファリングされていたすべての出力をただちに書き込みます。

定義:
インタフェース Flushable 内の flush

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。