官术网_书友最值得收藏!

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。

主站蜘蛛池模板: 娱乐| 宾阳县| 贡嘎县| 永丰县| 区。| 武邑县| 张家口市| 拜城县| 霍山县| 淳安县| 台前县| 广德县| 荔浦县| 宣武区| 恩平市| 丽水市| 阜新市| 潍坊市| 镇坪县| 兴义市| 江阴市| 苍梧县| 栖霞市| 彰武县| 塘沽区| 志丹县| 连南| 石河子市| 亳州市| 鄂托克前旗| 南漳县| 巴青县| 文登市| 京山县| 通辽市| 九江市| 南丹县| 海兴县| 临漳县| 建平县| 朝阳县|