Java开发笔记(九十三)深入理解字节缓存

本文详细解析Java中的字节缓存ByteBuffer,包括其构建方式、五大核心概念:容量、限制量、当前位置、剩余空间和标记位置,以及与字节缓存相关的数据流向和操作方法。通过ByteBuffer,可以实现字符串与文件之间的数据转换,涉及FileChannel和字节数组的交互。文中还阐述了ByteBuffer的clear、compact、flip和rewind方法的区别和使用场景。
摘要由CSDN通过智能技术生成

前面介绍了文件通道的读写操作,其中用到字节缓存ByteBuffer,它是位于通道内部的存储空间,也是通道唯一可用的存储形式。ByteBuffer有两种构建方式,一种是调用静态方法wrap,根据输入的字节数组生成对应的缓存对象;另一种是调用静态方法allocateDirect,根据输入的数值分配指定大小的空缓存。字节缓存又是一种特殊的存储空间,因为它可能会被多次读写,所以为了有效地控制读写操作,Java给它设计了下列五种概念:容量、当前限制量、当前位置、本次剩余空间、标记位置,分别说明如下:
1、容量(capacity):指的是字节缓存的整个长度。容量大小可通过缓存对象的capacity方法获得。
2、当前限制量(limit):指的是当前读写操作所能处理的最大空间大小。当前限制量可通过缓存对象的limit方法获得(不带输入参数),携带输入参数的limit方法用来设置当前限制量的数值。如果不设置当前限制量的大小,则limit数值默认为字节缓存的容量大小。
3、当前位置(position):指的是字节缓存当前操作的起始位置。当前位置可通过缓存对象的position方法获得(不带输入参数),携带输入参数的position方法用来设置当前位置的数值。字节缓存一开始的当前位置是0,每次进行读写操作位置之后,当前位置都会往后跟着挪动。
4、本次剩余空间(remaining):它的数值等于当前限制量减去当前位置(即limit-position)。本次剩余空间可通过缓存对象的remaining方法获得。
5、标记位置(mark):其概念类似缓存输入流的标记,同样是调用m

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值