亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于Java中使用BufferedReader讀取文件的疑惑

關于Java中使用BufferedReader讀取文件的疑惑

呼如林 2019-04-09 20:25:14
BufferedReaderin=newBufferedReader(newFileReader("foo.in"));willbuffertheinputfromthespecifiedfile.Withoutbuffering,eachinvocationofread()orreadLine()couldcausebytestobereadfromthefile,convertedintocharacters,andthenreturned,whichcanbeveryinefficient.這段話怎么理解,如果使用了緩沖區就不會涉及到byte轉character?求兩個讀取文件的流程和效率對比,先行謝過了。
查看完整描述

2 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

沒有緩沖區時,每次讀取操作都會導致一次文件讀取操作(就是告訴操作系統內核我要讀這個文件的這個部分,麻煩你幫我把它取過來)。而有緩沖區時,會一次性讀取很多數據,然后按要求分次交給上層調用者。讀取塊大小通常是按最適合硬件的大小來讀的,因為對于硬件來說,一次讀取一塊連續數據(比如1K)和一次讀取一個字節需要的時間幾乎是一樣的(都是一次讀操作,只是最終提交的數據量有差異)。帶緩沖的I/O和不帶緩沖的相比效率差異是非常顯著的,你可以自行寫程序測試。
                            
查看完整回答
反對 回復 2019-04-09
?
www說

TA貢獻1775條經驗 獲得超8個贊

樓上的解釋很好.我做一點補充:
說到javareader緩存,其實有兩層緩存:
1.OS緩存,把磁盤數據讀入內存,通過readahead,ioscheduler等減少磁盤讀取次數.
2.App緩存,做緩存/預讀,即BufferredReader的角色.
BufferredReader的作用,我的理解,一)減少SystemCall次數;二)減少磁盤讀取次數.
                            
查看完整回答
反對 回復 2019-04-09
  • 2 回答
  • 0 關注
  • 475 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號