首發日期:2018-07-24編程
什麼是字節流?數組
字節流--傳輸過程當中,傳輸數據的最基本單位是字節的流。函數
什麼是字符流?編碼
字符流--傳輸過程當中,傳輸數據的最基本單位是字符的流。spa
字符編碼方式不一樣,有時候一個字符使用的字節數也不同,好比ASCLL方式編碼的字符,佔一個字節;而UTF-8方式編碼的字符,一個英文字符須要一個字節,一箇中文須要三個字節。3d
字節數據是二進制形式的,要轉成咱們能識別的正常字符,須要選擇正確的編碼方式。咱們生活中遇到的亂碼問題就是字節數據沒有選擇正確的編碼方式來顯示成字符。code
從本質上來說,寫數據(即輸出)的時候,字節也好,字符也好,本質上都是沒有標識符的,須要去指定編碼方式。對象
但讀數據的時候,若是咱們須要去「看數據」,那麼字節流的數據須要指定字符編碼方式,這樣咱們才能看到咱們能識別的字符;而字符流,由於已經選擇好了字符編碼方式,一般不須要再改了(除非定義的字符編碼方式與數據原有的編碼方式不一致!)blog
在傳輸方面上,因爲計算機的傳輸本質都是字節,而一個字符由多個字節組成,轉成字節以前先要去查錶轉成字節,因此傳輸時有時候會使用緩衝區。接口
經常使用的字節輸入流主要有:
read(byte[] b, int off, int len):從流中從off的位置開始讀取len個字節的數據存儲到b中,返回結果是實際讀取到的字節個數(當再次讀時,若是返回-1說明到告終尾,沒有了數據)
經常使用的字節輸出流主要有:
常見的字符輸入流有:
常見的字符輸出流有:
flush():刷新輸出流,把數據立刻寫到輸出流中。 【這個仍是抽象的,寫出來是說明有這個關閉功能】