- Java核心技術·卷Ⅱ:高級特性(原書第10版)
- (美)凱S.霍斯特曼
- 526字
- 2020-10-30 18:10:38
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節以了解字符編碼方式的更多信息。
推薦閱讀
- FuelPHP Application Development Blueprints
- Google Apps Script for Beginners
- 數據庫程序員面試筆試真題與解析
- Java EE 6 企業級應用開發教程
- Java 9 Concurrency Cookbook(Second Edition)
- Java EE框架整合開發入門到實戰:Spring+Spring MVC+MyBatis(微課版)
- Developing Middleware in Java EE 8
- AngularJS Web Application Development Blueprints
- Hands-On C++ Game Animation Programming
- HTML5+CSS3+JavaScript Web開發案例教程(在線實訓版)
- Learning Network Forensics
- Learning OpenStack Networking(Neutron)
- Python數據結構與算法(視頻教學版)
- 蘋果的產品設計之道:創建優秀產品、服務和用戶體驗的七個原則
- MongoDB,Express,Angular,and Node.js Fundamentals