我基本上是在制作一个有趣的外壳,以便在命令提示符下发送和接收内容。 不过,我遇到了一个问题。 这是我的命令行代码:
public class CommandLine {
private Process cmdProcess;
private BufferedReader reader;
private BufferedWriter writer;
private StringBuffer bf;
private String ls = System.getProperty("line.separator");
public CommandLine() {
}
public void connect(){
try{
cmdProcess = Runtime.getRuntime().exec("cmd /b start");
reader = new BufferedReader(new InputStreamReader(cmdProcess.getInputStream()));
writer = new BufferedWriter(new OutputStreamWriter(cmdProcess.getOutputStream()));
bf = new StringBuffer();
} catch(Exception e){ }
}
public void sendCommand(String command){
try {
writer.write(command + ls);
writer.flush();
} catch(Exception e){
e.printStackTrace();
}
}
public void getContent(){
String s;
while((s = readResponse()) != null){
System.out.println(s);
}
}
public String readResponse(){
try{
return reader.readLine();
} catch(Exception e){
return null;
}
}
public void disconnect(){
try{
sendCommand("quit");
reader.close();
writer.close();
} catch(Exception e){
e.printStackTrace();
}
}
public void reset(){
try {
reader.reset();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这是问题所在。 当我处于主要方法中时,我会执行以下操作:
public static void main(String [] args){
CommandLine cmd = new CommandLine();
cmd.connect();
cmd.sendCommand("dir");
cmd.getContent();
System.out.println("Here");
}
“这里”永远不会被打印。 所以我很好奇我做错了什么。 我也希望能够发送命令,然后只读回该响应。 我当时想也许可以在读取器上使用reset()来这样做,但我不确定。 如果那还不够清楚,我的意思是我不希望将响应仅附加到StringBuffer或类似的内容上。
任何帮助,将不胜感激