モジュール java.base
パッケージ java.io

クラスConsole

java.lang.Object
java.io.Console
すべての実装されたインタフェース:
Flushable

public sealed class Console extends Object implements Flushable
現在のJava仮想マシンに関連付けられている文字ベースのコンソール・デバイスがある場合に、そのコンソール・デバイスにアクセスするためのメソッドです。

仮想マシンにコンソールがあるかどうかは、ベースとなるオペレーティング・システムと、仮想マシンが呼び出される方法によって決まります。 標準入力および出力のストリームをリダイレクトせずに、対話型のコマンド行から仮想マシンを起動する場合は、コンソールが存在し、通常そのコンソールは仮想マシンを起動したキーボードおよびディスプレイに接続されます。 たとえば、バックグラウンド・ジョブ・スケジューラによって仮想マシンが自動的に起動された場合、コンソールがない可能性があります。

この仮想マシンにコンソールがある場合、そのコンソールは、System.console()メソッドを呼び出すことで取得できるこのクラスの一意のインスタンスによって表されます。 使用可能なコンソール・デバイスがない場合は、そのメソッドの起動によってnullが返されます。

読み込みと書込みの操作は同期されるため、クリティカルな操作を不可分(atomic)に完了することができます。そのため、マルチ・スレッド化されたシナリオでは、readLine()readPassword()format()printf()の各メソッドの呼び出しや、reader()およびwriter()で返されるオブジェクトでの読み込み、フォーマット、書込みの操作がブロックすることがあります。

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