什麼是字節流?html
字節流--傳輸過程當中,傳輸數據的最基本單位是字節的流。編碼
什麼是字符流?htm
字符流--傳輸過程當中,傳輸數據的最基本單位是字符的流。blog
字符編碼方式不一樣,有時候一個字符使用的字節數也不同,好比ASCLL方式編碼的字符,佔一個字節;而UTF-8方式編碼的字符,一個英文字符須要一個字節,一箇中文須要三個字節。get
個人理解是,傳輸的時候都是使用字節流,而後將這些字節流進行編碼,例如傳輸的是中文,而後字節流使用UTF-8編碼編碼後,呈現爲漢字。it
字節數據是二進制形式的,要轉成咱們能識別的正常字符,須要選擇正確的編碼方式。咱們生活中遇到的亂碼問題就是字節數據沒有選擇正確的編碼方式來顯示成字符。io
從本質上來說,寫數據(即輸出)的時候,字節也好,字符也好,本質上都是沒有標識符的,須要去指定編碼方式。字符編碼
但讀數據的時候,若是咱們須要去「看數據」,那麼字節流的數據須要指定字符編碼方式,這樣咱們才能看到咱們能識別的字符;而字符流,由於已經選擇好了字符編碼方式,一般不須要再改了(除非定義的字符編碼方式與數據原有的編碼方式不一致!)亂碼
在傳輸方面上,因爲計算機的傳輸本質都是字節,而一個字符由多個字節組成,轉成字節以前先要去查錶轉成字節,因此傳輸時有時候會使用緩衝區。二進制
經常使用的字節流(以Stream結尾):InputStream,OutputStream,FileInputStream,FileOutputStream、BufferedInputStream 、BufferedOutputStream
經常使用的字符流(以Reader、Writer結尾):Reader、InputStreamReader、FileReader、BufferedReader等
流這一塊用的比較少,不太熟,能夠多加練習。