前言
我们平时使用Syetem.out.println()打印的时候都是打印在控制台的,在java中也可以打印到文件中.
System类的out、err 和in成员变量是final类型的,不能直接赋值,要通过应的setters方法来改变流。
1. setOut()方法
System类的setOut()方法改变了输出流,该方法用于重新分配System类的标准输出流out。方法的声明如下:
public static void setOut(PrintStream out)
参数说明
out:新的PrintStream输出流对象。
2.setErr() 方法
该方法将重新分配System类的标准错误输出流err。方法的声明如下:
public static void setErr(PrintStream err)
参数说明
err:新的PrintStream输出流对象。
3.setln()方法
该方法将重新设置System类的in成员变量,即标准输入流。方法的声明如:
public static void setIn(lnputStream in)
参数说明
in:新的InputStrcam输入流对象。
注意:调用之前要记得把原来的标准输出流对象System.out备份,以便后面恢复。
实例代码
import java.io.FileNotFoundException;
import java.io.PrintStream;
public class RedirectOutputStream
{
public static void main(String[] args)
{
try
{
System.out.println(System.out);
PrintStream out = System.out; // 保存原输出流,这步很重要,不然就恢复不回来
PrintStream ps = new PrintStream("输出重定向.txt"); // 创建文件输出流
System.setOut(ps); // 设置使用新的输出流,System.out.XXX将输入到文件中
System.out.println(System.out);
int age = 18; // 定义整型变量
System.out.println("age="+age);
String string="字符串";
System.out.println("string="+string);
System.setOut(out); // 恢复原有的输出流
System.out.println("程序运行完毕,请査看日志文件。");
} catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
}
运行结果:
java.io.PrintStream@15db9742
程序运行完毕,请査看日志文件。
输出重定向.txt:
java.io.PrintStream@6d06d69c
age=18
string=字符串