InputStreamReader和OutputStreamWriter 是位元組流通向字元流的橋梁:它使用指定的 charset 讀寫位元組并将其解碼為字元。
InputStreamReader 的作用是将“位元組輸入流”轉換成“字元輸入流”。它繼承于Reader。
OutputStreamWriter 的作用是将“位元組輸出流”轉換成“字元輸出流”。它繼承于Writer。
1. InputStreamReader 源碼(基于jdk1.7.40)

2. OutputStreamWriter 源碼(基于jdk1.7.40)

說明:
OutputStreamWriter 作用和原理都比較簡單。
作用就是将“位元組輸出流”轉換成“字元輸出流”。它的原理是,我們建立“字元輸出流”對象時,會指定“位元組輸出流”以及“字元編碼”。
InputStreamReader和OutputStreamWriter的使用示例,參考源碼(StreamConverter.java):
運作結果:
c1=字
buf=流示例0123456
結果說明:
(01) testWrite() 的作用是将“内容寫入到輸出流”。寫入的時候,會将寫入的内容轉換utf-8編碼并寫入。
(02) testRead() 的作用是将“内容讀取到輸入流”。讀取的時候,會将内容轉換成utf-8的内容轉換成位元組并讀出來。
生成的檔案utf-8的file.txt的16進制效果圖如下:
将StreamConverter.java中的CharsetName修改為"gb2312"。運作程式,生産的file.txt的16進制效果圖如下: