当前位置: 首页 > news >正文

nio中ByteBuffer使用

创建ByteBuffer
 ByteBuffer buffer = ByteBuffer.allocate(10);
 
 // 字符串转 bytebuffer
 ByteBuffer buffer01 = Charset.defaultCharset().encode("hello world");
ByteBuffer buffer02 = ByteBuffer.wrap("hello".getBytes());
ByteBuffer buffer03 = StandardCharsets.UTF_8.encode("hehe");

//  buffer转字符串
CharBuffer decode = StandardCharsets.UTF_8.decode(buffer02);
ByteBuffer结构
  • position : 读取或者写入的指针位置
  • limit : 读取或者写入限制位置
  • capacity : 容量
常用方法
  • put() :往buffer里面添加数据,,, 也可以通过channel读
  • get() : 会获取一个字节的数据,,指针往后走
  • get(i) : 获取指定位置的数据,,指针不会动
  • flip() : 切换到读模式,,,, position变为0 ,,limit变为数据长度
  • clear() : 切换到写模式 ,, position变成0,,limit变成 capacity
  • compact() : 压缩,有的时候数据读了一部分,没读完,又需要写入新的数据,compact将position变成剩余数据的长度,limit变成capacity
  • mark() 和 reset(): 有的部分需要反复的读,,用mark()设置一个标记, reset()回滚到那个标记
  • hasRemaining() : 是否有剩余字节可读写
  • rewind() : 将position变为0
http://www.dtcms.com/a/41395.html

相关文章:

  • 【C】堆的应用 -- 堆排序
  • Unity Shader 学习14:模版测试 与 深度测试
  • Linux文件操作原理
  • 机器学习:强化学习的epsilon贪心算法
  • CodeMeter SmartBind® 软授权智能绑定技术
  • 【Azure 架构师学习笔记】- Terraform创建Azure 资源
  • 趣讲TCP三次握手
  • 【Java分布式】Nacos注册中心
  • 深度评测:Cursor、Windsurf、Devin及其他AI编程工具大比拼
  • PS画笔工具
  • 【NLP】注意力机制
  • JavaScript
  • 2024华为OD机试真题-根据某条件聚类最少交换次数(C++/Java/Python)-E卷-100分
  • Linux基础 -- ARM 32 位架构动态注入代码技术文档
  • dify绑定飞书多维表格
  • 前端或者后端通常用到数组使用方式
  • PMP项目管理—整合管理篇—2.制定项目管理计划
  • drupal的翻译集添加后如何起作用
  • mysql怎样优化where like ‘%字符串%‘这种模糊匹配的慢sql
  • ODE卷-可以处理的最大任务数(200分)
  • [记录贴] 火绒奇怪的进程保护
  • Cherry Studio + 火山引擎 构建个人AI智能知识库
  • 操作系统:设备与I/O管理
  • springboot浅析
  • 打印九九乘法表
  • 【Docker】使用Docker搭建-MySQL数据库服务
  • 31.C++多态4(静态多态,动态多态,虚函数表的存储位置)
  • 使用 kubeadm 创建高可用 Kubernetes 及外部 etcd 集群
  • 基于Spring Boot的产业园区智慧公寓管理系统设计与实现(LW+源码+讲解)
  • C++ 红黑树万字详解(含模拟实现(两种版本))