Java中Buffer缓冲区的ByteBuffer类详解
作者:liyong0829
这篇文章主要介绍了Java中Buffer缓冲区的ByteBuffer类详解,ByteBuffer类是Java NIO库中的一个重要类,用于处理字节数据,它提供了一种灵活的方式来读取、写入和操作字节数据,ByteBuffer类是一个抽象类,可以通过静态方法创建不同类型的ByteBuffer对象,需要的朋友可以参考下
ByteBuffer类
ByteBuffer类内部封装了一个byte[]数组,并可以通过一些方法对这个数组进行操作。
创建ByteBuffer对象的三种方式
//方式一:在堆中创建缓冲区: public static ByteBuffer allocate(intcapacity) // 方式二: 在系统内存创建缓冲区: public static ByteBuffer allocatDirect(int capacity) // 方式三:通过数组创建缓冲区: public static ByteBuffer wrap(byte[] arr)
添加数据-put
public ByteBuffer put(byte b); //向当前可用位置添加数据。 public ByteBuffer put(byte[] byteArray); // 向当前可用位置添加一个byte[]数组 public ByteBuffer put(byte[] byteArray,int offset,int len); // 添加一个byte[]数组的一部分
容量-capacity
Buffer的容量(capacity)是指:Buffer所能够包含的元素的最大数量。定义了Buffer后,容量是不可变的
public final int capacity();//获取缓冲数组的容量
限制-limit
限制limit是指:第一个不应该读取或写入元素的index索引。缓冲区的限制(limit)不能为负,并且不能大于容量。 有两个相关方法:
public int limit()://获取此缓冲区的限制。 public Buffer limit(int newLimit)://设置此缓冲区的限制
位置-position
位置position是指:当前可写入的索引。位置不能小于0,并且不能大于"限制"。
结论: 操作缓冲数组,其实就是操作position到limit之间位置上的元素 有两个相关方法:
public int position()://获取当前可写入位置索引。 public Buffer position(int p)://更改当前可写入位置索引。
标记-mark
标记mark是指:当调用缓冲区的reset()方法时,会将缓冲区的position位置重置为该标记的索引。
相关方法:
public Buffer mark();//设置此缓冲区的标记为当前的position位置。 public Buffer reset();//将此缓冲区的位置重置为以前标记的位置。
其它方法
public Buffer clear();//还原缓冲区的状态。
- 将position设置为:0
- 将限制limit设置为容量capacity;
- 丢弃标记mark。
public Buffer flip();//缩小limit的范围。
- 将limit设置为当前position位置;
- 将当前position位置设置为0;
- 丢弃标记
到此这篇关于Java中Buffer缓冲区的ByteBuffer类详解的文章就介绍到这了,更多相关Java的ByteBuffer类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!