我想使用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
挂钩到通过文件传递的内容。
答案 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上。