带文件输入的System.console()

时间:2011-03-08 13:20:10

标签: java console

我想使用java.io.Console。我试图通过调用System.console()来做到这一点。这有点可行。

当我像这样运行我的程序时,这很好:

java classn

但是,我想从名为input.in的文件中读取标准输入。当我尝试通过以下方式这样做时:

java classn < input.in

我收到一个空指针异常:

Exception in thread "main" java.lang.NullPointerException
        at classn.main(classn.java:9)

是否有修复,以便我可以使用Console以及修复的输入?我知道为什么它返回null,我只想知道是否有办法将Console挂钩到通过文件传递的内容。

2 个答案:

答案 0 :(得分:4)

嗯,您必须测试System.console()是否返回null。如果确实如此,你必须在没有交互式控制台的情况下工作 - 没有解决这个问题。您可以使用System.in从重定向文件中获取信息。

另一种方法是使用命令行选项从给定的文件名中读取适当的数据,然后与控制台进行交互。

答案 1 :(得分:2)

通常,最简单的方法是使用绑定到System的Scanner类。在:

 Scanner sc = new Scanner (System.in);

致电您的计划

 cat foo | java Sample 

在linux / unix / bsd或

 type foo | java Sample 
在Windows上