Java NIO類庫關(guān)系圖解
下面這張圖給出了nio類庫的各個類之間的關(guān)系,這樣你就能知道該怎樣移動和轉(zhuǎn)換數(shù)據(jù)了。舉例來說,如果你想把byte數(shù)組寫進(jìn)文件,你得先用ByteBuffer.wrap( )方法把這個byte數(shù)組wrap成buffer,再用getChannel( )在FileOutputStream上打開一個channel,然后才能用ByteBuffer把數(shù)據(jù)寫入FileChannel。
注意,ByteBuffer是往channel里讀寫數(shù)據(jù)的***途徑,而且你只能創(chuàng)建這一種byte基本類型的緩沖器ByteBuffer,其余基本類型的緩沖器要用"as" 方法來獲取 。另外你不能把基本類型buffer轉(zhuǎn)換成ByteBuffer ,不過你可以用view buffer往ByteBuffer里讀寫基本類型數(shù)據(jù) ,所以這實(shí)際上也不是什么限制了。
另外,視圖是一種邏輯上的概念,通過視圖操作實(shí)質(zhì)上就是對ByteBuffer的操作,就像通過Iterator操作List一樣。雖然我們可以用wrap() 直接把char數(shù)組轉(zhuǎn)換成CharBuffer,但實(shí)際上它還是一個ByteBuffer,而CharBuffer只是它的view。由此可知,我們操控的對象永遠(yuǎn)都是ByteBuffer,因?yàn)橹挥兴拍芡鵦hannel里讀寫數(shù)據(jù) ,其他基本類型數(shù)據(jù)緩沖器原理一樣。
原文鏈接:http://jiangzhengjun.iteye.com/blog/515715
【編輯推薦】