buffer java nio_JAVA NIO BUFFER(一)Buffer概述

Buffer即缓冲区,是包含有一定量数据的容器。Buffer的工作和Channel有着紧密的联系。Channel是I/O的出入口,buffer就是IO的来源或者目标。

要向外传输数据,把数据存放在buffer中交给channel

要接受数据,提供buffer让channel写入。

4e955074b3f0

Buffer的类图.jpg

Capacity

Buffer可以包含的最大字节数。当Buffer创建的时候,容量被设置而且不可更改

Limit

Buffer中的第一个元素,这个元素不应该被读或者是被写。包含着在buffer中“存活”的数据个数

Position

下一个被操作的数据的位置。put和get操作会更新position的位置

Mark

一个有记忆的位置,设置了mark,之后可以回退到标记点,重新进行操作。

新创建一个大小为10的Buffer,概念中可以理解成是这样的

4e955074b3f0

EFFF51B75F4A39C60F13BE7E9D517BFA.jpg

下面是Buffer的方法签名

public abstract class Buffer{

public final int capacity()

public final int position()

public final Buffer position (int newPosition)

public final int limit ()

public final Buffer limit(int newLimit)

public final Buffer mark()

public final Buffer reset()

public final Buffer clear()

public final Buffer flip()

public final Buffer rewind()

public final int remaining()

public final boolean hasRemaining();

public abstract boolean isReadOnly();

}

你可能会觉得有一些方法应该返回空值,但是却返回了buffer对象,这是为了构建一个流式的API。比如像这样的代码

buffer.mark();

buffer.position(5);

buffer.reset()

//就可以写成下面这样

buffer.mark().position(5).reset();

所有的buffer都是可读的,但并不是所有的buffer都支持写操作,通过isReadOnly方法判断是否可以写,如果你试图向不支持写操作的buffer中写入数据,会抛出ReadOnlyBufferException异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值