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
相关推荐
不知疲倦的仄仄12 小时前
第一天:从 ByteBuffer 内存模型到网络粘包处理实战
java·网络·nio
zfj32115 小时前
java BIO、NIO、AIO用法样例
java·开发语言·nio·bio·aio
程序猿ZhangSir6 天前
深入理解 BIO,NIO,AIO 三者的用途和区别?Select,poll,epoll 操作系统函数简介
java·spring·nio
禾叙_8 天前
【NIO】ByteBuffer
前端·html·nio
heartbeat..9 天前
Java NIO 详解(Channel+Buffer+Selector)
java·开发语言·文件·nio
奕辰杰11 天前
Netty私人学习笔记
笔记·学习·netty·网络通信·nio
零度念者12 天前
Java IO/NIO 深度解析:从底层原理到高性能图片网关实战
java·nio
wanghowie15 天前
01.05 Java基础篇|I/O、NIO 与序列化实战
java·开发语言·nio
不穿格子的程序员17 天前
Redis篇8——Redis深度剖析:揭秘 Redis 高性能
数据库·redis·缓存·nio·io多路复用
yzp-22 天前
Java NIO Reactor 模式
java·开发语言·nio