在 J a v a 程序中截获控制台输出 在 Java开发中,控制台输出仍是一个重要的工具,但默认的控制台输出有着各种各样的局限
本文介绍如何用 Java 管道流截取控制台输出,分析管道流应用中应该注意的问题,提供了截取Java 程序和非 Java 程序控制台输出的实例
即使在图形用户界面占统治地位的今天,控制台输出仍旧在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 的文本窗口显示控制台输出
在此期间,我