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

时间:2017-02-16 06:26:07

标签: 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 {
            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以允许用户从控制台输入?

非常感谢你。

0 个答案:

没有答案