为了获得对Java控制台的引用,需要编写
Console console = System.console();
然而,当尝试在IDE中执行此操作时,控制台将用null初始化。为什么IDE中没有控制台?与在IDE中运行程序相比,直接从终端运行程序时允许控制台存在的思想过程是什么?
引用javadocs:
虚拟机是否具有控制台取决于底层平台,也取决于调用虚拟机的方式。如果虚拟机是从交互式命令行启动的,而没有重定向标准输入和输出流,那么它的控制台将存在,并且通常将连接到启动虚拟机的键盘和显示器。如果虚拟机是自动启动的,例如由后台作业调度程序启动,那么它通常不会有控制台。
您的IDE以非交互式方式运行jvm(没有键盘连接到输入),因此控制台在那里不可用。
为什么不使用
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//for reading from console
String str = bf.readline();
//for control ...
if(str.length >0){
do something;
}
//for writing to console
String utr= something;
bf.write(utr);
有些事情是这样的。。。。。。。。