1. 程式人生 > >位元組流與字元流的區別

位元組流與字元流的區別

要把一段二進位制資料資料逐一輸出到某個裝置中,或者從某個裝置中逐一讀取一段二進位制資料,不管輸入輸出裝置是什麼,我們要用統一的方式來完成這些操作,用一種抽象的方式進行描述,這個抽象描述方式起名為IO流,對應的抽象類為OutputStream和InputStream,不同的實現類就代表不同的輸入和輸出裝置,它們都是針對位元組進行操作的。

       計算機中的一切最終都是二進位制的位元組形式存在。對於經常用到的中文字元,首先要得到其對應的位元組,然後將位元組寫入到輸出流。讀取時,首先讀到的是位元組,可是我們要把它顯示為字元,我們需要將位元組轉換成字元。由於這樣的需求很廣泛,Java專門提供了字元流包裝類。

      底層裝置永遠只接受位元組資料,有時候要寫字串到底層裝置,需要將字串轉成位元組再進行寫入。字元流是位元組流的包裝,字元流則是直接接受字串,它內部將串轉成位元組,再寫入底層裝置,這為我們向IO裝置寫入或讀取字串提供了一點點方便。

      字元向位元組轉換時,要注意編碼的問題,因為字串轉成位元組陣列,其實是轉成該字元的某種編碼的位元組形式,讀取也是反之的道理。