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
相关推荐
Aaa111114432 天前
BIO NIO(新的IO模型)IO多路复用
nio
我命由我123453 天前
Java NIO 编程 - NIO Echo Server、NIO Client(NIO 异步客户端、NIO Selector 异步客户端)
java·开发语言·网络·java-ee·intellij-idea·intellij idea·nio
懒惰蜗牛3 天前
Day63 | Java IO之NIO三件套--选择器(下)
java·nio·选择器·selector·半包粘包·tcp缓冲区
n***i957 天前
Java NIO文件操作
java·开发语言·nio
程序员-周李斌7 天前
Java NIO [非阻塞 + 多路复用解]
java·开发语言·开源软件·nio
onAcorner12 天前
Netty/Redis网络模型——IO多路复用原理(操作系统)
netty·nio
C2H5OH66617 天前
Netty详解-02
java·websocket·网络协议·tcp/ip·tomcat·netty·nio
Moshow郑锴20 天前
Spring Boot 多线程文件复制服务(支持大文件流式/NIO复制、失败重试、覆盖写入)
nio
java干货23 天前
BIO是“一人盯一桌”,NIO是“一人管全场”,AIO是“机器人送餐”
java·机器人·nio
Luo_xguan23 天前
一、Netty-高并发IO底层原理(5种主要的IO模型)
java·服务器·netty·nio