Buffer 緩沖區(qū)
方法
- allocate() : 獲取緩沖區(qū)(Boolean除外)
- put() : 存入數(shù)據(jù)到緩沖區(qū)
- get() : 獲取緩沖區(qū)的數(shù)據(jù)
- flip() : 讀數(shù)據(jù)模式
- rewind() : 可重復(fù)讀
- clear() : 清空緩沖區(qū),但是緩沖區(qū)中數(shù)據(jù)依然存在碗脊,處于“被遺忘”狀態(tài)
- reset() : 將position恢復(fù)到mark的位置
- remaining() : position 到 limit 剩余的數(shù)據(jù)長度
- hasRemaining() : 判斷是否還有可操作的數(shù)據(jù)
- isDirect() : 判斷是否為直接緩沖區(qū)
四大核心屬性:
- capacity : 容量,表示緩沖區(qū)中最大存儲數(shù)據(jù)的容量。一旦聲明不能修改唱矛。
- limit : 界限沾歪,表示緩沖區(qū)中可以操作數(shù)據(jù)的大小。(limit后數(shù)據(jù)不能進行讀寫)
- position : 位置附迷,表示緩沖區(qū)中正在操作數(shù)據(jù)的位置匾灶。
- mark : 可以記錄當(dāng)前position的位置,通過reset()恢復(fù)到mark的位置
- 0 <= mark <= position <= limit <= capacity
直接緩沖區(qū)與非直接緩沖區(qū)
- 非直接緩沖區(qū): 通過allocate()方法分配緩沖區(qū)租漂, 將緩沖區(qū)建立在JVM的內(nèi)存中
- 直接緩沖區(qū):通過allocateDirect()方法分配直接緩沖區(qū)阶女,將緩沖區(qū)建立在物理內(nèi)存中×ㄖ危可以 提高效率
Channel通道
- 通道主要實現(xiàn)類
java.nio.channels.Channel接口: FileChannel秃踩、 SocketChannel、ServerSocketChannel业筏、DatagramChannel
1.Java針對支持通道的類提供了getChannel()方法
2.JDK7 中的NIO.2針對各個通道提供了靜態(tài)方法open()
3.JDK7 中的NIO.2的Files 工具類的newByteChannel()