System中的out,error都是final類型的,不能做改動。但通過setOut()可以設置新的輸出流,從而實現寫日志的功能。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import java.io.PrintStream; import java.io.FileNotFoundException; public class RedirectOutputStream { public static void main(String arg[]){ try { PrintStream out = System.out; //保留原輸出流 PrintStream ps = new PrintStream( "./log.txt" ); //創建文件輸出流 System.setOut(ps); //設置使用新的輸出流 int age = 18 ; System.out.println( "年齡變量成功定義,初始值為:18" ); String sex = "女" ; System.out.println( "性別變量成功定義,初始值為:女" ); String info = "這個是" + sex + "孩子,應該有" +age+ "歲" ; System.out.println( "整合兩個變量為info字符串變量,其結果為" +info); System.setOut(out); //恢復原有輸出流 System.out.println( "程序運行完畢,請查看日志文件。" ); } catch (FileNotFoundException e){ e.printStackTrace();} } } |
日志如下:
年齡變量成功定義,初始值為:18
性別變量成功定義,初始值為:女
整合兩個變量為info字符串變量,其結果為這個是女孩子,應該有18歲
總結:
該方法中保存了System類的out成員變量為臨時變量,然后創建新的文件輸出流,并把這個輸出流設置為System類的新是輸出流。并將持續的調試信息輸出到日志中去。主要方法:
1. setOut()方法: 重新分配System類的標準輸出流。
2. setErr()方法: 重新分配System類的標準錯誤輸出流。
3. setIn()方法: 重新分配System類的標準輸入流。