0

我正在从通过从批处理文件运行我的应用程序创建的控制台读取和写入。

我正在创建一个小型 servlet,但遇到了一个问题,即在我打字时,会在我打字的末尾打印一些东西(例如客户端连接或断开连接之类的东西)。它基本上让一切看起来很有趣,我一直在尝试找到一种方法来复制我正在输入的内容,打印出发生的事情(即客户端 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 回答