Java NIO Buffer 类的 flip 方法

Posted by icoding168 on 2020-04-01 16:30:03

分类: Java   网络编程  

Buffer 类有一个 flip() 方法,用来把缓冲区从写模式切换为读模式,在读取完成后,可以调用 Buffer.clear() 清空或者 Buffer.compact() 压缩方法,将缓冲区切换为写模式。

具体步骤如下:

首先,创建缓冲区。刚开始,缓冲区处于写模式。position 为 0,limit 为最大容量。

然后,向缓冲区写数据。每写入一个数据,position 向后面移动一个位置,也就是 position 的值加 1。假定写入了 5 个数,当写入完成后,position 的值为5。

最后,调用 flip() 方法,将缓冲区切换到读模式。limit 的值,先会被设置成写模式时的 position 值。这里新的 limit 是 5,表示可以读取的最大上限是 5 个数。同时,新的 position 会被重置为 0,表示可以从 0 开始读。