JAVA NIO(一):Buffer.mark()的用法
来源:互联网 发布:三菱中性笔 知乎 编辑:程序博客网 时间:2024/06/04 19:50
在默认情况下,Buffer.mark()并没有什么用处,既不会影响Buffer的遍历,也不会影响Buffer的位置统计函数,如remaining()函数,能影响这些操作的行为只有position()。
位置统计示例代码如下:
CharBuffer buffer = CharBuffer.allocate(10);buffer.put('你');buffer.put('好');// 直接跳转位置buffer.position(5);// 现在剩余的缓冲区只有5了assertThat(buffer.remaining(), IsEqual.equalTo(5));
位置遍历的代码如下:
CharBuffer buffer = CharBuffer.allocate(10);buffer.put('你');buffer.put('好');// 不需要mark也可进行遍历,buffer.position(0);// 遍历数据while(buffer.hasRemaining()) { System.out.println(buffer.get());}
从上面的两端代码可以看出,无论是遍历还是位置统计都不需要mark()操作,但结合使用reset(),mark()就可以大显身手了:
CharBuffer buffer = CharBuffer.allocate(10);buffer.put('你');buffer.put('好');// 经过标记后,会持续记住此位置buffer.position(0).mark();while(buffer.hasRemaining()) { System.out.println(buffer.get()); // mark将会跳转到上次标记的位置 buffer.reset();}
所以上述的程序将会持续输出“你”字,并进入无穷循环。
总结
把Buffer的函数整理一下,我们发现很多函数都提供了类似的功能,如:
# 回到第0个位置并标记buffer.position(0).mark();# 与上述函数的简洁写法buffer.flip();# 在0位置进行标记,reset也能达到类似的效果buffer.reset();
阅读全文
0 0
- JAVA NIO(一):Buffer.mark()的用法
- Java NIO的Buffer
- java nio之Buffer(一)
- java.nio.Buffer flip()方法的用法详解
- Java NIO中Buffer常用方法的用法及理解
- java.nio包的分析(一)--Buffer类
- JAVA NIO Buffer的学习
- java nio 基础之Buffer 用法
- Java之NIO(一)Channel和Buffer
- Java 之NIO(一) - 简介(Buffer)
- JAVA NIO之Buffer(一)
- java nio(一)--Buffer基础
- Java NIO(一) Buffer类源码分析
- java nio Buffer 中 compact的作用
- java nio之buffer的分析
- java nio 中关于buffer的详解
- Java NIO Channel与Buffer的概述
- Java NIO Channel与Buffer的概述
- jeesite应用实战(数据增删改查),认真读完后10分钟就能开发一个模块
- ViewPager+Fragment 懒加载学习笔记(二)
- 191. Number of 1 Bits
- Windows性能监控工具之Perfmon
- spring学习笔记6--AOP
- JAVA NIO(一):Buffer.mark()的用法
- next_permutation与使用
- Java之JFileChooser设置窗体打开路径
- php 注册email激活账号技术
- Codeforces 4A
- 【Android 从入门到放弃】 ButterKnife 使用
- C++实现顺序表
- 正则表达式
- 产品分析和深度学习资料(持续补充)