0

バッチファイルからアプリケーションを実行して作成したコンソールから読み取りと書き込みを行っています。

小さなサーブレットを作成していますが、入力中に、入力している場所の最後に物事(クライアントの接続や切断など)が出力されるという問題が発生しています。それは基本的にすべてを面白く見せます、そして私は私がタイプしていたものをコピーし、その場所に起こったこと(すなわちクライアントxが接続します!)を印刷しそして私が続けることができるように私がタイプしていたコマンドを下に貼り付ける方法を見つけようとしていました。

その一部(入力していたものが置き換えられている部分)は機能していると思いますが、入力を続けられるように、入力していたものをコピーしたり、次の行に配置したりする方法は考えられません。

このメソッドは、何かを印刷するときに呼び出され、基本的に出力にタイムスタンプを付けます。

public void say(String s){
    Calendar calendar = Calendar.getInstance();
    Date now = calendar.getTime();
    Timestamp current = new Timestamp(now.getTime());
    SimpleDateFormat date = new SimpleDateFormat("HH:mm:ss");
    String time = date.format(current);
    //how it gets printed
    System.out.println("\r" + time + "> " + s);
}

入力を待つために使用しているスレッド:

Thread thread = new Thread(){
    public void run(){
        Scanner scan = new Scanner(System.in);
        while(scan.hasNextLine()){
            String s = scan.nextLine();
            //do something with s?
        }
    }
};
thread.start();

どんな助けでも大歓迎です!

4

1 に答える 1

0

たぶん、sayメソッドでは、何かを出力する前に、ioバッファーまたはパイプラインをチェックして、何か(たとえば、入力している新しいコマンド)が含まれているかどうかを確認できます。もしそうなら、それを保存し、あなたがしなければならないことをして、そしてそれをバッファに戻します。

于 2012-08-11T01:21:06.520 に答える