Character流與Byte流的區別是
A) 每次讀入的字節數不同 B) 前者帶有緩沖,后者沒有
C) 前者是字符讀寫,后者是字節讀寫 D) 二者沒有區別,可以互換使用
Java的流操作分為字節流和字符流兩種。字節流與字符流主要的區別是他們的的處理方式
字節流是最基本的,所有的InputStream和OutputStream的子類都是,主要用在處理二進制數據,它是按字節來處理的。但實際中很多的數據是文本,又提出了字符流的概念,它是按虛擬機的encode來處理,也就是要進行字符集的轉化
這兩個之間通過 InputStreamReader,OutputStreamWriter來關聯,實際上是通過byte[]和String來關聯。
在實際開發中出現的漢字問題實際上都是在字符流和字節流之間轉化不統一而造成的。
字節流---->字符流
字節流轉化為字符流,實際上就是byte[]轉化為String時,
public String(byte bytes[], String charsetName)
有一個關鍵的參數字符集編碼,通常我們都省略了,那系統就用操作系統的lang
字符流---->字節流
字符流轉化為字節流,實際上是String轉化為byte[]時,byte[] String.getBytes(String charsetName)也是一樣的道理至於java.io中還出現了許多其他的流,按主要是為了提高性能和使用方便,如BufferedInputStream,PipedInputStream等
常識:
對於GBK編碼標准,英文占用1個字節,中文占用2個字節
對於UTF-8編碼標准,英文占用1個字節,中文占用3個字節
對於Unicode編碼標准,英文中文都是2個字節。這也是為什么叫做unicode
轉載地址:http://dylanxu.iteye.com/blog/1322066