繁体   English   中英

如何在一个控制台替换键入的文本时,一些打印呢?

[英]How do I replace typed text in a console when something is printed there?

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

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

任何帮助将不胜感激!

也许在say方法中,在输出任何内容之前,它可以检查io缓冲区或管道以查看其中是否包含某些内容(例如:您正在键入的新命令)。 如果是这样,请保存它,执行您想做的事情,然后将其放回缓冲区中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM