1. 程式人生 > >從位元組流到字元流的裝換

從位元組流到字元流的裝換

引用地址:https://blog.csdn.net/lzh_86/article/details/78107597

System.in的型別可以歸結為節點流、位元組流、輸入流;
InputStreamReader這個物件是處理流,字元流,輸入流;
BufferedReader的型別是緩衝處理流、字元流、輸入流。

  類 InputStreamReader是位元組流通向字元流的橋樑:它使用指定的 charset 讀取位元組並將其解碼為字元。它使用的字符集可以由名稱指定或顯式給定,或者可以接受平臺預設的字符集。如:GBK 
  每次呼叫 InputStreamReader 中的一個 read() 方法都會導致從底層輸入流讀取一個或多個位元組。要啟用從位元組到字元的有效轉換,可以提前從底層流讀取更多的位元組,使其超過滿足當前讀取操作所需的位元組。 為了達到最高效率,可要考慮在 BufferedReader 內包裝 InputStreamReader。例如:  BufferedReader in= new BufferedReader(new InputStreamReader(System.in));

System.in是個位元組流

InputStreamReader是個字元流和位元組流之間的轉換中介

BufferedReader是個字元流
整體意思就是用InputStreamReader這個中介把System.in這個位元組流轉換成字元流BufferedReader
這樣輸入的時候就可以不是一個一個位元組讀,而是一個一個字元讀,再加上是個Buffer,效率會高很多。
InputStream is = System.in;//鍵盤輸入流
InputStreamReader isr = new InputStreamReader(is);//位元組流轉換為字元流
BufferedReader bufr = new BufferedReader(isr);//把字元流新增到緩衝流

使用者通過reader物件的readLine方法來進行讀取。