java.nio.Buffer flip()方法
碰到j(luò)ava.nio.Buffer flip()方法,不明白是干什么用的,于是就趕快查看中文API,API上面翻譯的是:"反轉(zhuǎn)此緩沖區(qū)。首先對(duì)當(dāng)前位置設(shè)置限制,然后將該位置設(shè)置為零。如果已定義了標(biāo)記,則丟棄該標(biāo)記。";?
buffer中的flip方法涉及到bufer中的Capacity,Position和Limit三個(gè)概念。其中Capacity在讀寫模式下都是固定的,就是我們分配的緩沖大小,Position類似于讀寫指針,表示當(dāng)前讀(寫)到什么位置,Limit在寫模式下表示最多能寫入多少數(shù)據(jù),此時(shí)和Capacity相同,在讀模式下表示最多能讀多少數(shù)據(jù),此時(shí)和緩存中的實(shí)際數(shù)據(jù)大小相同。
在寫模式下調(diào)用flip方法,那么limit就設(shè)置為了position當(dāng)前的值(即當(dāng)前寫了多少數(shù)據(jù)),postion會(huì)被置為0,以表示讀操作從緩存的頭開始讀。也就是說調(diào)用flip之后,讀寫指針指到緩存頭部,并且設(shè)置了最多只能讀出之前寫入的數(shù)據(jù)長(zhǎng)度(而不是整個(gè)緩存的容量大小),為輸出數(shù)據(jù)做好準(zhǔn)備。
總結(jié)
以上是生活随笔為你收集整理的java.nio.Buffer flip()方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SelectionKey中定义的4种事件
- 下一篇: NIO : selector、chann