Java NIO 缓冲区操作全解析
1. 缓冲区基础操作
在 Java NIO 中,缓冲区是数据交互的重要组件。我们先来了解一些基础操作方法。
rewind()
方法与 flip()
类似,但它不会影响 limit
,仅将 position
置为 0。可以用它来重新读取已经 flip
过的缓冲区数据。若对缓冲区进行两次 flip
操作,缓冲区会变为零大小,此时调用 get()
会抛出 BufferUnderflowException
,调用 put()
会抛出 BufferOverflowException
。
2. 缓冲区数据抽取(Draining)
当把缓冲区传递给通道时,通道会从 position
开始,到 limit
结束抽取数据。如果接收到一个在别处填充好的缓冲区,在获取内容前可能需要先调用 flip()
。例如,通道 read()
操作完成后,若要查看通道放入缓冲区的数据,需在调用 get()
前先 flip()
缓冲区。
可以使用 hasRemaining()
方法判断抽取时是否到达缓冲区的 limit </