Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4041138
  • 博文数量: 366
  • 博客积分: 9916
  • 博客等级: 中将
  • 技术积分: 7195
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-29 23:27
个人简介

简单!

文章分类

全部博文(366)

文章存档

2013年(51)

2012年(269)

2011年(46)

分类: Java

2012-11-16 11:17:36

       System类中的out成员变量是java的标准输出流,通常用它来输出调试信息,out成员变量被定义为final类型,无法直接重新复制,但是可以通过setOut()方法来设置新的输出流。本例通过该方法实现了输出流的重定向,把它指向一个文件输出流,从而实现了日志功能。程序运行后绘制控制台提示运行结束信息;但是在运行过程中的步骤保存到了日志文件中。

       调用System类的setOut()方法改变了输出流,System类的outerrin成员变量是final类型的,不能直接赋值,要通过相应的方法来改变流。

setOut()方法:重新分配System类的标准输出流,方法声明

Public static void setOutPrintStream out); out:新的PrintStream输出流对象。

setErr()方法:重新分配System类的标准错误输出流,方法声明

Public static void setErrPrintStream err); err:新的PrintStream输出流对象。

setIn()方法:重新设置System类的in成员变量,即标准输入流。


       创建RedirectOutputStream类,编写main()主方法,在该方法中保存System类的out成员变量为临时变量,然后创建一个新的文件输出流,并把这个文件输出流设置为System类新的输出流。在程序关键位置输出调试信息,这些调试信息将通过新的输出流保存到日志文件中。最后恢复原有输出流并输出程序运行结束信息,关键代码:

  1. import java.io.FileNotFoundException;
  2. import java.io.PrintStream;

  3. public class RedirectOutputStream {

  4.     public static void main(String[] args) {

  5.         try {
  6.             PrintStream out=System.out; //保存原输出流
  7.             PrintStream ps=new PrintStream("./log.txt"); //创建文件输出流
  8.             System.setOut(ps); //设置使用新的输出流

  9.             int age=18;
  10.             System.out.println("年龄变量成功定义,初始值为18");
  11.             String ***="女";
  12.             System.out.println("性别变量成功定义,初始值为女");
  13.             String info="这个是"+***+"孩子,应该有"+age+"岁了!";
  14.             System.out.println("整合两个变量为info字符串变量,其结果是:"+info);

  15.             System.setOut(out); //恢复原有输出流
  16.             System.out.println("程序运行完毕,请查看日志文件。");
  17.         } catch(FileNotFoundException e) {
  18.             e.printStackTrace();
  19.         }
  20.     }
  21. }
阅读(4427) | 评论(2) | 转发(1) |
给主人留下些什么吧!~~

2013-01-14 11:44:13

faf882012-11-16 20:14:24

謝謝分享~
与其羡慕别人富有!到不如自己来创造自己的财富!
只要您愿意做,只要您愿意开始做,不用入会费,不用加盟金,
免费注册网址>> http://migre.me/bFG4O
觉得适合你再投入(合法经营,需满18岁)