没有合适的资源?快使用搜索试试~ 我知道了~
利用管道流截取JAVA项目的控制台输出,可以实现多线程写入,并输出控制台信息
资源推荐
资源详情
资源评论
在 Java 程序中截获控制台输出
俞良松 (javaman@163.net), 软件工程师, 独立顾问和自由撰稿人
简介: 在 Java 开发中,控制台输出仍是一个重要的工具,但默认的控制台输出有着各种各样的局限。本文介绍如何用 Java 管道流
截取控制台输出,分析管道流应用中应该注意的问题,提供了截取 Java 程序和非 Java 程序控制台输出的实例。
本文的标签: 在
java
程序中截获控制台输出
标记本文!
发布日期: 2001 年 10 月 16 日
级别: 初级
访问情况 : 3389 次浏览
评论: 0(查看 |添加评论 - 登录)
平均分 (8 个评分)
为本文评分
即使在图形用户界面占统治地位的今天,控制台输出仍旧在 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 的程序)控制台输出的简单程序。
图一:多线程的控制台输出截取程序
一、Java 管道流
要在文本框中显示控制台输出,我们必须用某种方法“截取”控制台流。换句话说,我们要有一种高效地读取写入到 System.out 和
System.err 所有内容的方法。如果你熟悉 Java 的管道流 PipedInputStream 和 PipedOutputStream,就会相信我们已经拥有最
有效的工 具。
写入到 PipedOutputStream 输出流的数据可以从对应的 PipedInputStream 输入流读取。Java 的管道流极大地方便了我们截取控
制台输出。Listing 1 显示了一种非常简单的截取控制台输出方案。
【Listing 1:用管道流截取控制台输出】
PipedInputStream pipedIS = new PipedInputStream();
PipedOutputStream pipedOS = new PipedOutputStream();
try {
pipedOS.connect(pipedIS);
}
catch(IOException e) {
System.err.println("连接失败");
System.exit(1);
}
PrintStream ps = new PrintStream(pipedOS);
System.setOut(ps);
剩余34页未读,继续阅读
资源评论
houster
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【java毕业设计】校园资产管理源码(springboot+vue+mysql+说明文档+LW).zip
- 【java毕业设计】人事管理系统源码(springboot+vue+mysql+说明文档+LW).zip
- 问题- pip install pyqt6-tool失败.pdf
- 【java毕业设计】老年一站式服务平台源码(springboot+vue+mysql+说明文档).zip
- 【java毕业设计】科研项目验收管理系统源码(springboot+vue+mysql+说明文档+LW).zip
- java电商书城系统源码带本地搭建教程数据库 MySQL源码类型 WebForm
- 小熊派读取浊度、TDS、PH值和温湿度传感器的数据
- 【java毕业设计】智慧生活商城系统设计与实现源码(springboot+vue+mysql+说明文档+LW).zip
- 基于RBAC模型的权限控制的一整套基础开发平台,前后端分离,后端采用 django+django-rest-framework,前端采用 vue+ElementUI
- 扰动观测器(时域)-Matlab/Simulink开发
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功