调用系统类中的放样()方法改变输出流
放样方法
用于重新分配系统类的标准输出流
声明方法如下:
public static void setOut(PrintStreaam out)
实例1:创建RedirectOutputStream类,编写该类的主要主方法,在该方法中保存系统类的出成员变量为临时变量,然后创建一个新的文件输出流,并把这个输出流设置为系统类新的输出流。在程序关键位置输出调试信息,这些调试信息将通过新的输出流保存到日志文件中。最后恢复原有输出流,并输出程序运行结束信息。
import java.io.FileNotFoundException;
import java.io.PrintStream;
public class RedirectOutputStream {
public static void main (String[] args) {
try {
PrintStream out = System.out;
PrintStream ps = new PrintStream("./log.txt");
System.setOut(ps);
String name = "伊莉雅";
System.out.println("姓名变量定义成功,初始值为伊莉雅。");
int age = 12 ;
System.out.println("年龄变量定义成功,初始值为12");
String sex = "女";
System.out.println("性别变量定义成功,初始值为女");
String info = "这是个"+sex+"孩子,"+"名字叫"+name+",应该有"+age+"岁了。";
System.out.println("整合3个变量为info字符串变量,其结果为:"+info);
System.setOut(out);
System.out.println("程序运行完毕。请查看日志文件。");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
编译情况
控制台运行结果
日志文件内容
setErr方法
用于重新分配系统类的标准错误输出流
声明方法如下:
public static void setErr(PrintStreaam err)
实例2增加重定向标准错误输出流
import java.io.FileNotFoundException;
import java.io.PrintStream;
public class RedirectOutputStream {
public static void main (String[] args) {
try {
//重定向标准输出流
PrintStream out = System.out;
PrintStream ps = new PrintStream("./log.txt");
System.setOut(ps);
String name = "伊莉雅";
System.out.println("姓名变量定义成功,初始值为伊莉雅。");
int age = 12 ;
System.out.println("年龄变量定义成功,初始值为12");
String sex = "女";
System.out.println("性别变量定义成功,初始值为女");
String info = "这是个"+sex+"孩子,"+"名字叫"+name+",应该有"+age+"岁了。";
System.out.println("整合3个变量为info字符串变量,其结果为:"+info);
System.setOut(out);
System.out.println("程序执行完毕,请查看工作目录下的log.txt");
//重定向标准错误输出
PrintStream errstream=System.err;
PrintStream errprint=new PrintStream("./err.txt");
System.setErr(errprint);
String news="警告:错误信息出现";
System.err.println(news);
System.setErr(errstream);
System.err.println("程序执行完毕,请查看工作目录下的err.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
控制台运行结果图
日志文件内容