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
相关推荐
小bo波12 天前
从"任意文件复制"深挖Java I/O:字符流与字节流的本质抉择
java·nio·io流·后端开发·文件复制
swordbob16 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
swordbob17 天前
NIO 的 Channel 里有多个 BIO 吗?
linux·网络·nio
starsky7623820 天前
NIO与BIO的区别
java·服务器·nio
东南门吹雪21 天前
JAVA TCP socket编程框架
java·高并发·socket·tcp·nio
JackSparrow41422 天前
彻底理解Java NIO(三)Java实现 I/O多路复用+Reactor模式及开源框架代码解读
java·c语言·开发语言·后端·nio·reactor模式
布朗克16822 天前
25 IO流高级操作——序列化、NIO与Files工具类
java·数据库·io·nio
不懂的浪漫25 天前
10|Netty native epoll 与零拷贝:从 Java NIO 再往下看一层![
java·netty·nio
许彰午25 天前
24_Java NIO核心组件
java·python·nio
C+++Python1 个月前
如何在 Java 中使用 BIO、NIO 和 AIO?
java·开发语言·nio