即使在圖形用戶界面占統治地位的今天,控制臺輸出仍舊在Java程序中占有重要地位?刂婆_不僅是Java程序默認的堆棧跟蹤和錯誤信息輸出窗口,而且還是一種實用的調試工具(特別是對習慣于使用println()的人來說)。然而,控制臺窗口有著許多局限。例如在Windows 9x平臺上,DOS控制臺只能容納50行輸出。如果Java程序一次性向控制臺輸出大量內容,要查看這些內容就很困難了。
對于使用javaw這個啟動程序的開發者來說,控制臺窗口尤其寶貴。因為用javaw啟動java程序時,根本不會有控制臺窗口出現。如果程序遇到了問題并拋出異常,根本無法查看Java運行時環境寫入到System.out或System.err的調用堆棧跟蹤信息。為了捕獲堆棧信息,一些人采取了用 try/catch()塊封裝main()的方式,但這種方式不一定總是有效,在Java運行時的某些時刻,一些描述性錯誤信息會在拋出異常之前被寫入 System.out和System.err;除非能夠監測這兩個控制臺流,否則這些信息就無法看到。
因此,有些時候檢查Java運行時環境(或第三方程序)寫入到控制臺流的數據并采取合適的操作是十分必要的。本文討論的主題之一就是創建這樣一個輸入流,從這個輸入流中可以讀入以前寫入Java控制臺流(或任何其他程序的輸出流)的數據。我們可以想象寫入到輸出流的數據立即以輸入的形式“回流”到了 Java程序。
本文的目標是設計一個基于Swing的文本窗口顯示控制臺輸出。在此期間,我們還將討論一些和Java管道流(PipedInputStream和 PipedOutputStream)有關的重要注意事項。圖一顯示了用來截取和顯示控制臺文本輸出的Java程序,用戶界面的核心是一個 JTextArea。最后,我們還要創建一個能夠捕獲和顯示其他程序(可以是非Java的程序)控制臺輸出的簡單程序。
圖一:多線程的控制臺輸出截取程序
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/