將一下字節流和字符流(未完待續)

什麼是字節流?html

  字節流--傳輸過程當中,傳輸數據的最基本單位是字節的流。編碼

什麼是字符流?htm

  字符流--傳輸過程當中,傳輸數據的最基本單位是字符的流。blog

 

  字符編碼方式不一樣,有時候一個字符使用的字節數也不同,好比ASCLL方式編碼的字符,佔一個字節;而UTF-8方式編碼的字符,一個英文字符須要一個字節,一箇中文須要三個字節。get

  個人理解是,傳輸的時候都是使用字節流,而後將這些字節流進行編碼,例如傳輸的是中文,而後字節流使用UTF-8編碼編碼後,呈現爲漢字。it

  字節數據是二進制形式的,要轉成咱們能識別的正常字符,須要選擇正確的編碼方式。咱們生活中遇到的亂碼問題就是字節數據沒有選擇正確的編碼方式來顯示成字符。io

  從本質上來說,寫數據(即輸出)的時候,字節也好,字符也好,本質上都是沒有標識符的,須要去指定編碼方式。字符編碼

  但讀數據的時候,若是咱們須要去「看數據」,那麼字節流的數據須要指定字符編碼方式,這樣咱們才能看到咱們能識別的字符;而字符流,由於已經選擇好了字符編碼方式,一般不須要再改了(除非定義的字符編碼方式與數據原有的編碼方式不一致!)亂碼

  在傳輸方面上,因爲計算機的傳輸本質都是字節,而一個字符由多個字節組成,轉成字節以前先要去查錶轉成字節,因此傳輸時有時候會使用緩衝區。二進制

  經常使用的字節流(以Stream結尾):InputStream,OutputStream,FileInputStream,FileOutputStream、BufferedInputStream 、BufferedOutputStream

  經常使用的字符流(以Reader、Writer結尾):Reader、InputStreamReader、FileReader、BufferedReader等

流這一塊用的比較少,不太熟,能夠多加練習。

參考自:http://www.javashuo.com/article/p-ywacghmo-cu.html

相關文章
相關標籤/搜索