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
相关推荐
Leaf吧7 天前
java BIO/NIO/AIO
java·开发语言·nio
康小庄7 天前
AQS独占模式——资源获取和释放源码分析
java·开发语言·jvm·spring boot·spring·spring cloud·nio
真实的菜8 天前
Java NIO 面试全解析:9大核心考点与深度剖析
java·面试·nio
%d%d28 天前
Unable to make field long java.nio.Buffer.address accessible:
java·开发语言·nio
众纳16 天前
Spring Boot 从Socket 到Netty网络编程(上):SOCKET 基本开发(BIO)与改进(NIO)
nio·bio·java socket·java bio·java nio·java 网络编程
EdmundXjs18 天前
IO Vs NIO
java·开发语言·nio
苗内1 个月前
CloudWeGo-Netpoll:高性能NIO网络库浅析
网络·nio
蚰蜒螟1 个月前
剖析 Spring 中 @ResponseBody 原理与 Tomcat NIO 写事件(SelectionKey.OP_WRITE)的协作机制
spring·tomcat·nio
残*影1 个月前
BIO、NIO、AIO 的区别与实战应用解析
nio
快乐肚皮1 个月前
Netty学习专栏(一):Java NIO编程与核心组件详解
java·学习·nio