JAVA:如何通过重定向从控制台获取输入

JAVA:如何通过重定向从控制台获取输入,java,redirect,io,inputstream,Java,Redirect,Io,Inputstream,很抱歉打扰你们,但我找不到答案时,做了大量的搜索 这是我的代码,非常简单: 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 {

很抱歉打扰你们,但我找不到答案时,做了大量的搜索

这是我的代码,非常简单:

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);

    }
}
使用类似于:javatest的命令,所有东西都可以找到,我可以通过键入一些东西从控制台获取输入。 但是,由于命令中存在重定向,我无法在控制台上键入输入,应用程序将立即返回

java Test /d/aa.dat < /d/example.dat
Exception in thread "main" java.lang.NullPointerException
        at Test.main(Test.java:17) 
java测试/d/aa.dat
我认为根本原因是当我在命令行中对文件使用重定向时,默认的System.in被文件“example.dat”覆盖

我的问题是如何恢复默认System.in以允许用户从控制台输入


非常感谢。

看,这根本不可能。这里有一个解释:这是不可能的。请参考链接了解说明,