【学习笔记】Java NIO

【学习笔记】Java NIO

NIO                                                                                                                                                                    

1 Buffer

1.1 基本属性

(1)capacity

  这个 Buffer 最多能放多少数据。 capacity 一般在 buffer 被创建的时候指定。

(2)limit

  在 Buffer 上进行的读写操作都不能越过这个下标。当写数据到 buffer 中时, limit 一般和 capacity 相等,当读数据时, limit 代表 buffer 中有效数据的长度。

(3)position

  读 / 写操作的当前下标。当使用 buffer 的相对位置进行读 / 写操作时,读 / 写会从这个下标进行,并在操作完成后, buffer 会更新下标的值。

(4)mark

  一个临时存放的位置下标。调用 mark() 会将 mark 设为当前的 position 的值,以后调用 reset() 会将 position 属性设置为 mark 的值。 mark 的值总是小于等于 position 的值,如果将 position 的值设的比 mark 小,当前的 mark 值会被抛弃掉。

  这些属性总是满足以下条件:0 <= mark <= position <= limit <= capacity

1.2 基本操作

  limit 和 position 的值除了通过 limit() 和 position() 函数来设置,也可以通过下面这些函数来改变:

(1)clear()

  把 position 设为 0 ,把 limit 设为 capacity ,一般在把数据写入 Buffer 前调用

(2)flip()

  把 limit 设为当前 position ,把 position 设为 0 ,一般在从 Buffer 读出数据前调用

(3)rewind()

  把 position 设为 0 , limit 不变,一般在把数据重写入 Buffer 前调用

原文地址:https://www.cnblogs.com/onliny/p/2585152.html