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

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.kler.cn/a/564483.html

相关文章:

  • 记录MFC联合halcon界面显示开发
  • Ubuntu下QT安装和调试的常见问题(一)__could_not_dertermine_which_make
  • 大白话解释深度学习中多尺度特征融合及其意义
  • 趣讲TCP三次握手
  • 使用Apifox动态生成请求参数
  • 如何将mobaxterm的默认编辑器修改为vscode
  • 深入浅出:插入排序算法完全解析
  • Java中,Scanner和System.out超时的解决方法及原理
  • 【含文档+PPT+源码】基于过滤协同算法的旅游推荐管理系统设计与实现
  • Spring Boot + JSqlParser:全面解析数据隔离最佳实践
  • 左值引用与右值引用详解
  • Autosar_RTE基础概念整理
  • 为AI聊天工具添加一个知识系统 之125 详细设计之66 智能语义网络
  • leetcode 912. 排序数组
  • 需求: 使用 minio 做一个 企业微信对话的下载、存储,利用deepseek进行对话回复
  • 在VSCode中安装jupyter跑.ipynb格式文件
  • PhpStorm 绿色版 安装包 Win/Mac/Linux 商业的PHP集成开发环境 2025全栈开发终极指南:从零配置到企业级实战
  • 腾讯云的海外轻量云套餐
  • 【学写LibreCAD】3 qmetaobject库介绍
  • Pytorch加载数据的Dateset类和DataLoader类