我需要将一个(直接) ByteBuffer
传递给从中读取/写入缓冲区的本地函数。一旦这些操作完成,我想要使用常规函数从Java代码中访问ByteBuffer
;特别是limit()
和position()
应该反映缓冲区的当前状态。
由于JNI将使用GetDirectBufferAddress()
直接访问底层缓冲区,因此我假设在读取/写入完成后应该调用flip()
/limit()
/position()
。然而,我无法使其工作。例如,在从C中将几个字节读入缓冲区并相应地设置其限制和位置之后,我不能从Java中查询这些字节;Java对缓冲区限制和位置的理解与我在C代码中所做的不一致。
有人能指向一个可行的例子吗?提前感谢。