モジュール java.base
パッケージ 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
    コンソールをフラッシュして、バッファリングされていたすべての出力をただちに書き込みます。
    format​(String fmt, Object... args)
    指定された書式文字列および引数を使用して、書式付き文字列をこのコンソールの出力ストリームに書き込みます。
    printf​(String format, Object... args)
    指定された書式文字列および引数を使用して、書式付き文字列をこのコンソールの出力ストリームに書き込む簡易メソッドです。
    このコンソールに関連付けられている一意のReaderオブジェクトを取得します。
    コンソールから単一行のテキストを読み込みます。
    readLine​(String fmt, Object... args)
    書式設定されたプロンプトを提供し、次にコンソールから単一行のテキストを読み込みます。
    char[]
    エコーを無効にしたコンソールからパスワードまたはパス・フレーズを読み込みます。
    char[]
    readPassword​(String fmt, Object... args)
    書式設定されたプロンプトを提供し、次にエコーを無効にしたコンソールからパスワードまたはパス・フレーズを読み込みます。
    このコンソールに関連付けられている一意のPrintWriterオブジェクトを取得します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • メソッドの詳細

    • 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)では、転送先バッファにより多くの文字を格納する領域がある場合でも、行の境界を越えて文字を読み込むことはありません。 Readerreadメソッドでは、コンソールの入力デバイスで行の境界が入力されずに到達しない場合にブロックされることがあります。 行の境界は、改行('\n')、復帰('\r')、復帰と改行の組み合わせ、またはストリームの終わりのいずれかであるとみなされます。

      戻り値:
      このコンソールに関連付けられているReader
    • format

      public Console format(String fmt, Object... args)
      指定された書式文字列および引数を使用して、書式付き文字列をこのコンソールの出力ストリームに書き込みます。
      パラメータ:
      fmt - 「書式文字列の構文」で説明した書式文字列
      args - 書式文字列の書式指示子により参照される引数。 引数が書式指定子よりも多い場合、余分な引数は無視されます。 引数の数は変数で、0(ゼロ)の場合があります。 引数の最大数は、「Java Virtual Machine仕様」で定義されているJava配列の最大サイズによって制限されます。 引数がnullの場合、動作は変換に応じて異なる。
      戻り値:
      このコンソール
      例外:
      IllegalFormatException - 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。 考えられるすべての書式エラーの仕様については、フォーマッタ・クラス仕様の「詳細」セクションを参照。
    • printf

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

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

      con.format(format, args)
      .

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

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

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

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

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

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