下面這張圖給出了nio類庫的各個類之間的關系,這樣你就能知道該怎樣移動和轉換數據了。舉例來說,如果你想把byte數組寫進文件,你得先用ByteBuffer.wrap( )方法把這個byte數組wrap成buffer,再用getChannel( )在FileOutputStream上打開一個channel,然后才能用ByteBuffer把數據寫入FileChannel。

注意,ByteBuffer是往channel里讀寫數據的唯一途徑,而且你只能創建這一種byte基本類型的緩沖器ByteBuffer,其余基本類型的緩沖器要用"as" 方法來獲取 。另外你不能把基本類型buffer轉換成ByteBuffer ,不過你可以用view buffer往ByteBuffer里讀寫基本類型數據 ,所以這實際上也不是什么限制了。
另外,視圖是一種邏輯上的概念,通過視圖操作實質上就是對ByteBuffer的操作,就像通過Iterator操作List一樣。雖然我們可以用wrap() 直接把char數組轉換成CharBuffer,但實際上它還是一個ByteBuffer,而CharBuffer只是它的view。由此可知,我們操控的對象永遠都是ByteBuffer,因為只有它才能往channel里讀寫數據 ,其他基本類型數據緩沖器原理一樣。