很抱歉打扰你们,但是在做了很多搜索时我找不到答案。
这是我的代码,非常简单:
import java.io.IOException;
import java.io.ObjectInputStream;
public class Test {
public static void main(String[] args) {
System.out.println(args.length);
ObjectInputStream is;
try {
is = new ObjectInputStream(System.in);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String input = System.console().readLine();
System.out.println("input: " + input);
}
}
使用如下命令:java Test,一切正常,我可以通过键入内容从控制台获取输入。 但是,在命令中使用重定向,我无法在控制台上键入输入,应用程序将立即返回。
java Test /d/aa.dat < /d/example.dat
Exception in thread "main" java.lang.NullPointerException
at Test.main(Test.java:17)
我认为根本原因是当我在命令行中使用重定向文件时,默认的System.in被文件“example.dat”覆盖。
我的问题是如何恢复默认的System.in以允许用户从控制台输入?
非常感谢你。