天天看點

位元組跳動還是字元跳動

位元組跳動還是字元跳動

堅持原創,寫好每一篇文章

很多人對于java的io流的概念不太了解,什麼是流呢?它其實就是指的是能夠産生資料和接收資料的對象。那麼有位元組流的操作和字元流的操作,我們分别看一下這兩種

面向位元組流的輸入輸出

InputStream和OutputStream主要是對位元組的處理,我們經常是對檔案的操作,而這用到的類就是FileInputStream和FileOutputStream

面向字元流的輸入輸出

Reader和Writer主要是對字元的處理,Reader類是用于讀取字元流的抽象類,它的子類需要實作 read()方法 和 close()方法。Writer類用于寫入字元流的抽象類,它的子類需要的實作 write()方法、flush() 方法和 close()方法。

兩者的選擇

對應大部分場景下,Reader和Writer的相關類可以替代面向位元組流的操作,有一些場景還不得不用位元組流操作,也就是說能用Reader和Writer就用Reader和Writer。

兩者的轉換

有時候我們既需要對字元流操作,有需要對位元組流操作,這就需要兩者進行轉換了,

而InputStreamReader和OutputStreamWriter充當了擴充卡的角色,會将位元組流轉換為字元流。

InputStreamReader 讀取位元組并使用指定的字元集将它們解碼為字元。字元集可以作為參數來指定或者使用系統預設字元集。InputStreamReader 的 read() 方法在每次調用都可能從底層位元組輸入流中讀取一個或多個位元組。為了實作位元組到字元的有效轉換,可以從底層流中預先讀取比滿足目前讀取操作所需的更多的位元組。 官方建議通過BufferedReader來裝飾InputStreamReader提高效率

BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
           
Writer out = new BufferedWriter(new OutputStreamWriter(System.out)); 
           

總結

❤️ 感謝大家

  1. 歡迎關注我❤️,點贊👍🏻,評論🤤,轉發🙏
  2. 關注

    盼盼小課堂

    ,定期為你推送好文,還有群聊不定期抽獎活動,可以暢所欲言,與大神們一起交流,一起學習。
  3. 有不當之處歡迎批評指正。