Java.nio使用总结(三)——Buffer

Java.nio使用总结(三)——Buffer

ByteBuffer

基本概念

在使用ByteBuffer类时应当明确三个概念【记住这三个东西】

  • position(标记所处的位置,文件读取到的位置)
  • limit(文件的读取限制)
  • capacity(空间大小)

方法使用

创建
/**
num输入大小
*/
ByteBuffer byteBuffer = ByteBuffer.allocate(int num)

在这里插入图片描述
【创建后的结果类似于这个图像】

public ByteBuffer put(ByteBuffer src)

用来向内部输入数据

public abstract byte get()

获取数据

ByteBuffer flip()
// 这个来看他父类的方法是怎么写的
public Buffer flip() {
        limit = position;
        position = 0;
        mark = -1;
        return this;
    }

不难看出,这里是将limit放置到原position的位置,将position位置归零 (一般用于即将要进行read之前)

在这里插入图片描述
之前数据
在这里插入图片描述
之后数据

ByteBuffer rewind()
// 这个来看他父类的方法是怎么写的
public Buffer rewind() {
        position = 0;
        mark = -1;
        return this;
    }

这个是将position归零 (一般用于希望重新读取一遍文件)

在这里插入图片描述
之前状态
在这里插入图片描述
之后状态

public abstract ByteBuffer compact()

这个不是很好懂
(一般用来配合写入操作时;将position与limit之间的内容移到0与(limit - position)之间的区域,position的值变为limit - position,limit的值变为capacity;)
注意看数字的变化 、箭头的变化

在这里插入图片描述
之前
在这里插入图片描述
之后

ByteBuffer clear()
// 看源码
public Buffer clear() {
        position = 0;
        limit = capacity;
        mark = -1;
        return this;
    }

将三个属性回复到刚开时的时候(并没有删除数据)

在这里插入图片描述
之前
在这里插入图片描述
之后

public final int remaining()
public final int remaining() {
        return limit - position;
    }

剩余空间

public final boolean hasRemaining()
public final boolean hasRemaining() {
        return position < limit;
    }

这是一个他父类的方法,用于是否还有空置

获取基本信息
byteBuffer.capacity();
byteBuffer.position();
byteBuffer.limit();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值