java.io.Console - 与stdin重定向兼容的实用程序?

时间:2013-01-31 11:44:54

标签: java

某些Java库中是否有一个实用程序类,提供java.io.Console的设施,但与Bash管道重定向输入兼容?

以下代码:

import java.io.Console;
public class Foo {
  public static void main(String args[]) {
    Console cons = System.console();
    String foo = cons.readLine(); // line-5
  }
}
在执行以下操作时,

会在第5行抛出NPE:

echo "test" | java Foo

除了使用 System.in 之外,还提到了in this SO discussion而没有提供任何替代方法。

1 个答案:

答案 0 :(得分:3)

尝试以下方法:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Foo {
    public static void main(String args[]) throws Exception {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String foo = in.readLine(); // line-5
        System.out.println(foo);
    }
}

密码相关功能应手动完成。