博為峰小博老師:
Buffer的常見方法如下所示:
lflip(): 寫模式轉(zhuǎn)換成讀模式
lrewind():將 position重置為0勉失,一般用于重復(fù)讀。
lclear():清空buffer卦羡,準(zhǔn)備再次被寫入 (position變成0窟社,limit變成capacity) 痊末。
lcompact(): 將未讀取的數(shù)據(jù)拷貝到buffer的頭部位。
lmark(): reset():mark 可以標(biāo)記一個(gè)位置内狸,reset 可以重置到該位置检眯。
lBuffer常見類型: ByteBuffer 、 MappedByteBuffer 昆淡、 CharBuffer 锰瘸、 DoubleBuffer 、 FloatBuffer 昂灵、 IntBuffer 避凝、 LongBuffer 舞萄、 ShortBuffer 。
[通道Channel]
通道(Channel)是 java.nio 的第二個(gè)主要?jiǎng)?chuàng)新管削。它們既不是一個(gè)擴(kuò)展也不是一項(xiàng)增強(qiáng),而是全新倒脓、極好的 Java I/O 示例,提供與 I/O 服務(wù)的直接連接。Channel用于在字節(jié)緩沖區(qū)和位于通道另一側(cè)的實(shí)體(通常是一個(gè)文件或套接字)之間有效地傳輸數(shù)據(jù)含思。
通道是一種途徑,借助該途徑,可以用最小的總開銷來訪問操作系統(tǒng)本身的 I/O 服務(wù)崎弃。緩沖區(qū)則是通道內(nèi)部用來發(fā)送和接收數(shù)據(jù)的端點(diǎn)。通道channel充當(dāng)連接I/O服務(wù)的導(dǎo)管含潘,入下圖所示: