用Writer打印內(nèi)容到console或者瀏覽器時,必須要考慮到flush。如果你用writer打印出很多內(nèi)容,而程序結(jié)束時,writer如果沒有被flush則用戶完全看不到或者不會看到完整的信息。例如:
public static void main(String[] args) {
PrintWriter log = new PrintWriter(System.out);
log.println("Hello, Jack")
}
運行后,沒有任何顯示。這是因為"Hello, Jack"被buffer了,至少兩種方法可以解決這個問題
(1)PrintWriter log = new PrintWriter(System.out, true);
設(shè)置writer為auto flush, 每一個print/println的內(nèi)容被即刻寫到屏幕上。優(yōu)點是即時性,缺點是效能低;適合用于打印到屏幕或者瀏覽器
(2)log.flush(); 或 log.close() - Writer.close()里面會flush一下。
優(yōu)點是效能高,缺點不即時。 適合用于寫到文件
新聞熱點
疑難解答