0

私は基本的に、コマンドプロンプトへの送受信で遊ぶためのシェルを作成しています。私は少し問題に遭遇しています。コマンドラインのコードは次のとおりです。

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 などに追加したくないということです。

どんな助けでもいただければ幸いです

4

1 に答える 1

0
于 2013-11-12T10:08:56.677 に答える