2012-08-11 46 views
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(); 

任何幫助將不勝感激!

回答

0

也許在say方法中,在打印任何東西之前,它可以檢查io緩衝區或管道,以查看它是否包含某些東西(例如,您正在鍵入的新命令)。如果是這樣,保存它,做你應該做的,並把它放回緩衝區。

+0

你能解釋一下如何去檢查某個緩衝區的內容嗎? – user1563402 2012-08-11 01:36:59

+0

環顧四周後,我找不到如何直接從java訪問控制檯緩衝區。你真的需要系統輸出到控制檯嗎?也許將它輸出到日誌文件會更好,並且您可以在單獨的控制檯上監視日誌文件? – syzygy 2012-08-13 05:51:46

相關問題