- Java核心技術·卷Ⅱ:高級特性(原書第10版)
- (美)凱S.霍斯特曼
- 1013字
- 2020-10-30 18:10:38
2.2.1 如何寫出文本輸出
對于文本輸出,可以使用PrintWriter。這個類擁有以文本格式打印字符串和數字的方法,它還有一個將PrintWriter鏈接到FileWriter的便捷方法,下面的語句:

等同于:

為了輸出到打印寫出器,需要使用與使用System.out時相同的print、println和printf方法。你可以用這些方法來打印數字(int、short、long、float、double)、字符、boolean值、字符串和對象。
例如,考慮下面的代碼:

它將把下面的字符:

輸出到寫出器out,之后這些字符將會被轉換成字節并最終寫入employee.txt中。
println方法在行中添加了對目標系統來說恰當的行結束符(Windows系統是"\r\n",UNIX系統是"\n"),也就是通過調用System.getProperty("line.separator")而獲得的字符串。
如果寫出器設置為自動沖刷模式,那么只要println被調用,緩沖區中的所有字符都會被發送到它們的目的地(打印寫出器總是帶緩沖區的)。默認情況下,自動沖刷機制是禁用的,你可以通過使用PrintWriter(Writer out,Boolean autoFlush)來啟用或禁用自動沖刷機制:

print方法不拋出異常,你可以調用checkError方法來查看輸出流是否出現了某些錯誤。
注意:Java的老手們可能會很想知道PrintStream類和System.out底怎么了。在Java 1.0中,PrintStream類只是通過將高字節丟棄的方式把所有Unicode字符截斷成ASCII字符。(那時,Unicode仍舊是16位編碼方式)很明顯,這并非一種干凈利落和可移植的方式,這個問題在Java 1.1中通過引入讀入器和寫出器得到了修正。為了與已有的代碼兼容,System.in、System.out和System.err仍舊是輸入/輸出流而不是讀入器和寫出器。但是現在PrintStream類在內部采用與PrintWriter相同的方式將Unicode字符轉換成了默認的主機編碼方式。當你在使用print和println方法時,PrintStream類型的對象的行為看起來確實很像打印寫出器,但是與打印寫出器不同的是,它們允許我們用write(int)和write(byte[])方法輸出原生字節。
java.io.PrintWriter 1.1
·PrintWriter(Writer out)
·PrintWriter(Writer writer)
創建一個向給定的寫出器寫出的新的PrintWriter。
·PrintWriter(String filename,String encoding)
·PrintWriter(File file,String encoding)
創建一個使用給定的編碼方式向給定的文件寫出的新的PrintWriter。
·void print(Object obj)
通過打印從toString產生的字符串來打印一個對象。
·void print(String s)
打印一個包含Unicode碼元的字符串。
·void println(String s)
打印一個字符串,后面緊跟一個行終止符。如果這個流處于自動沖刷模式,那么就會沖刷這個流。
·void print(char[]s)
打印在給定的字符串中的所有Unicode碼元。
·void print(char c)
打印一個Unicode碼元。
·void print(int i)
·void print(long l)
·void print(float f)
·void print(double d)
·void print(boolean b)
以文本格式打印給定的值。
·void printf(String format,Object...args)
按照格式字符串指定的方式打印給定的值。請查看卷Ⅰ第3章以了解格式化字符串的相關規范。
·boolean checkError()
如果產生格式化或輸出錯誤,則返回true。一旦這個流碰到了錯誤,它就受到了污染,并且所有對checkError的調用都將返回true。
- 軟件安全技術
- 數據庫程序員面試筆試真題與解析
- 騰訊iOS測試實踐
- Java開發入行真功夫
- Processing互動編程藝術
- Java Web應用開發技術與案例教程(第2版)
- Java 9模塊化開發:核心原則與實踐
- C語言課程設計
- Mastering Android Development with Kotlin
- 西門子S7-200 SMART PLC編程從入門到實踐
- 案例式C語言程序設計實驗指導
- Visual Basic程序設計習題與上機實踐
- C++ Application Development with Code:Blocks
- Java程序設計
- Mastering Machine Learning with scikit-learn