`

NIO学习笔记三(Buffer)

    博客分类:
  • NIO
nio 
阅读更多

这一章学习nio中的Buffer使用。

1、Buffer概述

Buffer可以认为是在内存中划分了块,这些区间允许往里面写数据和从里面读数据。这些内存块被包装

成了NIO Buffer对象,方便使用。

2、Buffer基本使用

使用Buffer进行数据读写,需要如下四步:

1、往Buffer中写入数据:通常使用Channel来完成。

2、调用 buffer.flip()方法:这个方法将Buffer从写模式(writing)转换为读模式(reading)。

3、从Buffer中读取数据。

4、调用 buffer.clear() 或者 buffer.compact()方法:clear方法清空整个Buffer,compact

方法将Buffer中未读取的内容安排至Buffer的开始位置。

 

3、Buffer  Capacity, Position and Limit

      capacity,position and limit是Buffer三个重要的属性。先看图:

Java NIO: Buffer capacity, position and limit in write and read mode.

Buffer capacity, position and limit in write and read mode.

 描述如下:

  • capacity:Buffer的容量,Buffer可以写入数据的容量大小,已Byte为单位。
  • position:指示当前数据读写的位置,主要是在于高速Buffer下个要读或者写的位置是什么。
  • limit:写入数据时与capacity概念一样,表示可以写入多少数据;读数据代表可读多少数据。

4、Buffer 的类型

  • ByteBuffer
  • MappedByteBuffer
  • CharBuffer
  • DoubleBuffer
  • FloatBuffer
  • IntBuffer
  • LongBuffer
  • ShortBuffer

    可将各种数据类型对Buffer读写。其中,MappedByteBuffer比较特殊,后面再提。

 

4、Buffer 的分配、写数据、flip、读数据

      空间分配:每种Buffer的类型都有allocate()方法,用来分配初始Buffer的大小。      写数据:两种方式,一是从Channel写入Buffer;二是通过代码put方法放入数据。

      flip:flip方法,表示buffer已经写完数据了,可以进行读了。

      读数据:两种方式,一是将Buffer的数据写入Channel中;二是通过get方法获取数据。

5、rewind、clear与compact、mark与reset

      rewind方法:将position属性重置为0,可以重读Buffer中的内容。

      clear与compact:clear清空整个Buffer,数据被清除,position被设置为0,从读模式转换为写模式;

                             compact清空已读的数据,将未读的数据放置在前面,position被设置为未读的数据位置。

      mark与reset:mark标记已读的位置,当想回到这个标记的时候,调用reset方法,将会回来。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics