搜尋

首頁  >  問答  >  主體

java中字符流和字节流的转换

看到InputStreamReader和OutputStreamWriter的一些说法,
说InputStreamReader是将字节流转换成字符流,而OutputStreamWriter则相反,是将字符流转换成字节流;
但是
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("xxxx")));
这句代码中,明显OutputStreamWriter接收的是一个字节流,而返回的则是个字符流,
所以上面的说法应该是错误的吧?

ringa_leeringa_lee2823 天前978

全部回覆(3)我來回復

  • 怪我咯

    怪我咯2017-04-17 17:39:42

    額...這個...
    OutputStreamWriter的建構方法傳入參數是一個OutputStream位元組流,也就是把OutputStream轉換成OutputStreamWriter,從這個角度看是「位元組流轉換成字元流」。
    OutputStreamWriter在write的時候,你傳入了字符,但是最終IO寫出的是字節流,這個角度看來是「字符流轉換成字節流」。
    所以兩種說法都對。

    「位元組流轉換成字元流」是指API的轉換,「字元流轉換成位元組流」是指在write的時候資料的轉換。

    其實你只要知道,電腦本身只支援01010101這樣的二進位字節,而字元或字串都是字節編碼得到的,OutputStreamWriter只是多了一步編碼操作而已。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 17:39:42

    構造 OutputStreamWriter 的是一個 FileOutputStream,這個 stream 其實是被封裝在 writer 中,向 writer 進行的所有寫入操作最終都會寫入 stream 中。但是向 writer 進行寫入操作的時候,寫入的是字串,而 writer 會將傳入的字串轉換為字元流寫入 stream 中…所以呢…

    回覆
    0
  • PHPz

    PHPz2017-04-17 17:39:42

    雷雷 雷雷

    回覆
    0
  • 取消回覆