程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> io流-Java中OutputStreamWriter和BufferedWriter的緩沖區有什麼區別?

io流-Java中OutputStreamWriter和BufferedWriter的緩沖區有什麼區別?

編輯:編程綜合問答
Java中OutputStreamWriter和BufferedWriter的緩沖區有什麼區別?

經過試驗,OutputStreamWriter在寫文件的時候是有緩沖區的,這個緩沖區和BufferedWriter類的緩沖區在使用上有什麼區別?(除了WriterLine這點區別)

也就是說,實際上BufferedWriter類和BufferedReader類都有兩層緩沖區,這兩層緩沖區的作用分別是什麼呢?

先謝過各位大神了!

最佳回答:


首先OutputStreamWriter和BufferedWriter的缺省buffer size是不一樣的OutputStreamWriter是8k bytes,BufferedWriter是8k chars。其次,OutputStreamWriter底層使用的是StreamEncoder,也就是對charset進行了編碼,舉個例子,你是完全可以本地采用比如gb2312的編碼而寫到一個utf-8文件裡去的,這個時候你會用OutputStreamWriter。當然缺省的話是使用本地的charset。即使使用缺省的charset,OutputStreamWriter是會把沒法轉碼的字符轉成malformed surrogate,而BufferedWriter是不會的。
至於你說的兩層緩沖,我猜你可能指的是寫文件的時候,一般操作系統對文件都有自己的緩沖系統。但是這個只是因為底層是文件系統,假設你操作socket,采用buffer可以使得封包大小更合理。
還有一點,BufferedWriter封裝的是writer,也就是當buffer滿了讓別的writer去處理輸出,而OutputStreamWriter封裝的事數據流(OutputStream),它是讓數據流去處理輸出。stream和writer的不同不用說,一個是二進制數據,一個是字符數據,這兩個根本就不一樣了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved