System類中的out成員變量是java的標准輸出流通常用它來輸出調試信息out成員變量被定義為final類型無法直接重新復制但是可以通過setOut()方法來設置新的輸出流本例通過該方法實現了輸出流的重定向把它指向一個文件輸出流從而實現了日志功能程序運行後繪制控制台提示運行結束信息但是在運行過程中的步驟保存到了日志文件中
調用System類的setOut()方法改變了輸出流System類的outerr和in成員變量是final類型的不能直接賦值要通過相應的方法來改變流
setOut()方法重新分配System類的標准輸出流方法聲明
Public static void setOut(PrintStream out) out:新的PrintStream輸出流對象
setErr()方法重新分配System類的標准錯誤輸出流方法聲明
Public static void setErr(PrintStream err) err:新的PrintStream輸出流對象
setIn()方法重新設置System類的in成員變量即標准輸入流
創建RedirectOutputStream類編寫main()主方法在該方法中保存System類的out成員變量為臨時變量然後創建一個新的文件輸出流並把這個文件輸出流設置為System類新的輸出流在程序關鍵位置輸出調試信息這些調試信息將通過新的輸出流保存到日志文件中最後恢復原有輸出流並輸出程序運行結束信息關鍵代碼
import javaioFileNotFoundException;
import javaioPrintStream;
public class RedirectOutputStream {
public static void main(String[] args) {
try {
PrintStream out=Systemout; //保存原輸出流
PrintStream ps=new PrintStream(/logtxt) //創建文件輸出流
SystemsetOut(ps) //設置使用新的輸出流
int age=;
Systemoutprintln(年齡變量成功定義初始值為)
String ***=女;
Systemoutprintln(性別變量成功定義初始值為女)
String info=這個是+***+孩子應該有+age+歲了!;
Systemoutprintln(整合兩個變量為info字符串變量其結果是+info)
SystemsetOut(out) //恢復原有輸出流
Systemoutprintln(程序運行完畢請查看日志文件)
} catch(FileNotFoundException e) {
eprintStackTrace()
}
}
}
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25742.html