谁能帮我解释下java的NIO包中ByteBuffer类的clear(),flip(),rewind()方法的意思,这些

1个回答

  • 首先澄清一点:这三个方法都是ByteBuffer的抽象基类Buffer定义的方法,ByteBuffer只是继承了它们.

    clear() 使缓冲区为一系列新的通道读取或相对放置 操作做好准备:它将限制设置为容量大小,将位置设置为 0.

    通道读取指从通道将数据读入到buffer中,相对放置是从位置开始将数据插入到buffer中

    flip() 使缓冲区为一系列新的通道写入或相对获取 操作做好准备:它将限制设置为当前位置,然后将位置设置为 0.

    把限制设置为当前位置是为了保证数据的可靠性.让从buffer写入到通道的数据是buffer中确实是已经存在的数据.

    rewind() 使缓冲区为重新读取已包含的数据做好准备:它使限制保持不变,将位置设置为 0.

    和clear()类似,只是不改动限制

    这三个方法在源码上就对缓冲区的数据不进行任何修改