nio中ByteBuffer使用

创建ByteBuffer
java 复制代码
 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
相关推荐
23.1 天前
【Java】NIO 中的多路复用(Selector / Channel)机制
java·面试·nio
23.1 天前
【Java】NIO零拷贝:为何transferTo需要循环调用?
java·面试·nio
一叶飘零_sweeeet2 天前
从 BIO 到 AIO 全链路拆解:Reactor 模型演进与高并发 IO 架构落地实战
netty·nio
快乐非自愿2 天前
NIO核心原理深度解析:非阻塞I/O的块式设计与高并发实现逻辑
人工智能·深度学习·nio
Charlie_lll2 天前
BIO、NIO 和 AIO 基础介绍
网络·nio·bio·aio
一个有梦有戏的人15 天前
Java 网络编程核心:BIO、NIO、AIO IO 模型深度解析与实战
java·网络·后端·netty·nio
WZTTMoon1 个月前
Java IO三大模型(BIO/NIO/AIO)超详细总结
java·nio
java1234_小锋1 个月前
Java高频面试题:BIO、NIO、AIO有什么区别?
java·面试·nio
Serene_Dream1 个月前
NIO 的底层机理
java·jvm·nio·mmap
强化试剂1 个月前
Ergosterol-PEG-Biotin,麦角甾醇PEG生物素在生物偶联中的关键应用
jvm·intellij-idea·mybatis·nio