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
相关推荐
Eugene__Chen4 天前
java IO/NIO/AIO
java·python·nio
一个儒雅随和的男子4 天前
Netty前置基础知识之BIO、NIO以及AIO理论详细解析和实战案例
nio
Craaaayon5 天前
JVM虚拟机--JVM的组成
java·jvm·nio
森叶8 天前
Java NIO & Java 虚拟线程(微线程)与 Go 协程的运行原理不同 为何Go 能在低配机器上承接10万 Websocket 协议连接
java·websocket·nio
码熔burning8 天前
【Netty篇】Channel 详解
netty·nio·channel
码熔burning9 天前
【NIO番外篇】之组件 Selector
java·io·nio·selector
码熔burning12 天前
【NIO番外篇】之组件 Channel
java·nio·channel
zhangpeng45554794013 天前
用Java NIO模拟HTTPS
java·https·nio
蜗牛、Z1 个月前
Java NIO之FileChannel 详解
java·nio
嘉友1 个月前
NIO ByteBuffer 总结
java·后端·nio