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

2.2 文本輸入與輸出

在保存數據時,可以選擇二進制格式或文本格式。例如,整數1234存儲成二進制數時,它被寫為由字節00 00 04 D2構成的序列(十六進制表示法),而存儲成文本格式時,它被存成了字符串“1234”。盡管二進制格式的I/O高速且高效,但是不宜人來閱讀。我們首先討論文本格式的I/O,然后在2.3節中討論二進制格式的I/O。

在存儲文本字符串時,需要考慮字符編碼(character encoding)方式。在Java內部使用的UTF-16編碼方式中,字符串“1234”編碼為00 31 00 32 00 33 00 34(十六進制)。但是,許多程序都希望文本文件按照其他的編碼方式編碼。在UTF-8這種在互聯網上最常用的編碼方式中,這個字符串將寫出為4A 6F 73 C3 A9,其中并沒有用于前3個字母的任何0字節,而字符é占用了兩個字節。

OutputStreamWriter類將使用選定的字符編碼方式,把Unicode碼元的輸出流轉換為字節流。而InputStreamReader類將包含字節(用某種字符編碼方式表示的字符)的輸入流轉換為可以產生Unicode碼元的讀入器。

例如,下面的代碼就展示了如何讓一個輸入讀入器可以從控制臺讀入鍵盤敲擊信息,并將其轉換為Unicode:

這個輸入流讀入器會假定使用主機系統所使用的默認字符編碼方式。在桌面操作系統中,它可能是像Windows 1252或MacRoman這樣的古老的字符編碼方式。你應該總是在InputStreamReader的構造器中選擇一種具體的編碼方式。例如,

請查看2.2.4節以了解字符編碼方式的更多信息。

主站蜘蛛池模板: 易门县| 礼泉县| 个旧市| 长顺县| 武威市| 沿河| 堆龙德庆县| 临海市| 会昌县| 星子县| 宜黄县| 朔州市| 黄浦区| 旬阳县| 上蔡县| 福安市| 阜城县| 灵台县| 扶沟县| 晋州市| 东源县| 仙游县| 阳江市| 伊宁县| 老河口市| 鱼台县| 淮滨县| 河北省| 岳池县| 思茅市| 滦南县| 东平县| 十堰市| 庄浪县| 朝阳区| 大庆市| 莲花县| 保靖县| 澄迈县| 马山县| 雷州市|