本人在Eclipse里用代码在后台开启一个终端,然后将命令传入,然后再讲结果输出到控制台,但是有些命令需要你二次确认,本人理解就是终端重新开了另一个进程。这时,我写的代码就混乱了。
比如,输入某个命令时,显示
Start it from the beginning? (y or n) Please answer y or n.
此时,需要你在该句后面输入“y”或“n”才能继续。
我的代码如下:
public void callBackCommand(Process tvm, String command) {
MessageConsoleStream printer = ConsoleFactory1.getConsole().newMessageStream();
printer.setActivateOnWrite(true);
printer.println(command);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(tvm.getOutputStream()));
try {
bw.flush();
bw.write(command + " \n");
bw.flush();
InputStream is = tvm.getInputStream();
InputStreamReader isr = null;
isr = new InputStreamReader(is, "UTF-8");
BufferedReader in = new BufferedReader(isr);
String line = null;
while ((line = in.readLine()) != null) {
printer.println(line + "\n");
}
InputStream isE = tvm.getErrorStream();
InputStreamReader isrE = null;
isrE = new InputStreamReader(isE, "UTF-8");
BufferedReader err = new BufferedReader(isrE);
String lineE = null;
while ((lineE = err.readLine()) != null) {
printer.println(lineE + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
}
请问要实现我的需求,应该怎么写?我的需求就是,怎么在Eclispe用代码和后台终端交互。有链接资料也可,拜谢。。。。
参考:https://blog.csdn.net/jsphnld/article/details/84415335
Scanner scanner=new Scanner(System.in);
A:while(true){
String str=scanner.nextLine().trim();
//如果为空,则忽略此次输入
if(str.isEmpty()){
continue;
}
switch (str){
case "q":{
System.out.println("结束");
break A;
}
default:{
System.out.println("无法识别指令:"+str);
}
}
}