NIO - Buffer机制

本文详细介绍了Java NIO中的Buffer机制,它作为一个可读写的内存块,是数据在Channel间传输的桥梁。Buffer在初始化时,limit等于capacity。在写操作中,position会随着数据存入hb数组而改变。Buffer具有类型化get/set方法,支持只读和在内存中直接修改文件内容。此外,Buffer还支持分散写入(Scattering)和聚集读出(Gathering)功能,有效利用内存碎片。
摘要由CSDN通过智能技术生成
1.2.1 Buffer机制
  • 缓冲区是一个可读写的内存块(一个含数组的容器对象)
  • Channel提供从文件、网络读取数据的渠道,但是读取或者写入数据都必须经由Buffer
1.2.1.1 示例
//可存放5个int的Buffer
IntBuffer intBuffer = IntBuffer.allocate(5);
//写操作
for(int i = 0 ; i < intBuffer.capacity(); i++){
   
    intBuffer.put(i * 2);
}
//读写切换
intBuffer.flip();
while(intBuffer.hasRemaining()){
   
    System.out.println(intBuffer.get());
}

当我们点进去IntBuffer类中,可以看到三个属性

final int[] hb;                  // 真正存放数据的地方
final int offset;
boolean isReadOnly;                 // Valid only for heap buffers

它的父类Buffer,有四个很重要的属性

private int mark = -1; //标记,很少主动修改
private int position = 0; //当前位置,会自动变化
private int limit; //缓冲区的当前终点,可以变化
private int capacity; //初始化时allocate的数量,不可改变

示例调试

//可存放5个int的Buffer
IntBuffer intBuffer = IntBuffer.allocate(5);
  • 初始化的时候limit时等于capacity的

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值