当打印某些内容时,如何在控制台中替换键入的文本?

时间:2012-08-11 01:15:19

标签: java printing command system.out system.in

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

我正在创建一个小型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();

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

也许在say方法中,在打印任何内容之前,它可以检查io缓冲区或管道以查看它是否有某些内容(例如:您正在键入的新命令)。如果是这样,保存它,做你要做的事,然后把它放回缓冲区。