我们平时使用Syetem.out.println()打印的时候都是打印在控制台的,在java中也可以打印到文件中:
System类的setOut()方法改变了输出流,System类的out、err 和in成员变量是final类型的,不能直接赋值,要通过应的setters方法来改变流。
1. 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=字符串