home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

Java/標準入力, コンソール入力の読み取り(System.in, System.console(), java.io.Console)

Java/標準入力, コンソール入力の読み取り(System.in, System.console(), java.io.Console)

Java / 標準入力, コンソール入力の読み取り(System.in, System.console(), java.io.Console)
id: 1208 所有者: msakamoto-sf    作成日: 2013-07-14 11:50:18
カテゴリ: Java 

コマンドラインツールで、プロンプトを表示してユーザからの入力を読み取りたいときに。

JDK1.5まで:System.inから読み取る方式。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("prompot:>");
String input = br.readLine().trim();
System.out.println("Input = [" + input + "]");

JDK1.6から:標準入力がコマンドプロンプトやターミナルであれば、System.console()が返すjava.io.Consoleクラスのインスタンスでプロンプト表示+一行入力読み取りのショートカットが提供されてる。

Console console = System.console();
if (null == console) {
    System.out
            .println("'System.console()' returns null, Console is disabled.");
} else {
    console.printf("Console Output Example %s%n", "abcdefg");
    String input = console.readLine("[%s %s]>", "abc", "def");
    console.printf("Input = [%s]%n", input);
    char[] password = console.readPassword("input dummy password>");
    console.printf("Input Password = [%s]%n", new String(password));
}

注意点:

  • 実行環境によっては "System.console()" がnullを返す場合があるので、必ずnullチェックは必要。
    • 例:Eclipseから実行して、Eclipseの「コンソール」("Console")ウインドウ上で操作した場合、System.console()はnullを返してました。(Eclipse 4.2 Juno SR2)

サンプル(JDK 1.7で確認):

参考資料:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-07-14 12:03:47
md5:11c026996c5f0a9b257770dd05ec2512
sha1:72151a184881dd25b2e88117da952088153c3a2d
コメント
コメントを投稿するにはログインして下さい。