java NIO Buffer常用方法
来源:互联网 发布:淘宝开店类目如何选择 编辑:程序博客网 时间:2024/05/24 06:57
一、Buffer简介
1、Buffer是被用来当缓冲区使用的小部分内存,有七个子类ByteBuffer, CharBuffer, DoubleBuffer, FloatBuffer, IntBuffer, LongBuffer, ShortBuffer ,分别用来存储不同的数据类型。
2、Buffer的核心属性。如ByteBuffer按字节(8位)的方式存储数据,若存储字符(java按unicode字符16位)则高八位将会被截取。
假如定义一个ByteBuffer
mark:定义缓冲区后,存储数据的初始位置,默认为0
position:存储或者读取到的数据的当前位置,下一个数据将从该position处后面的一个字节开始存储。
limit:缓冲区中数据的有效位置,默认和容量一样。
capacity:初始容量。
二、图形分析
ByteBuffer初始化状态
插入hello之后的状态
flip之后的状态,读就绪状态
缓冲区是否相等,重写的compareTo方法,通过有效数据的字节挨个比较得出的
clear状态:position=mark,limit=capacity
compact状态:舍弃读取过的内容后,mark=position,position = 0;limit=capacity.
三、常见方法的使用
buffer常与channel联合使用,这里只介绍常用方法。
<span style="font-family:KaiTi_GB2312;">package buffer;import java.nio.ByteBuffer;//position返回0的位置。其实是返回到mark标记处的位置,而mark是可以改变的public class TestBuffer {public static void main(String[] args) {// 定义一个BufferByteBuffer buffer = defineBuffer();//放入数据,读取数据,截取buffertestBufferMethod(buffer);}public static void testBufferMethod(ByteBuffer buffer) {buffer.put("abcdefg".getBytes());System.out.println(buffer.position());//此时position位置为7,下个数据将放在8的位置//读取buffer的数据必须用flip方法。flip方法时position为0,limit为8.读取数据仍然从position开始//limit表示position到limit之间的有效数据buffer.flip();while(buffer.hasRemaining()) { //如果还有就继续读取System.out.print((char)buffer.get());//读取有效数据abcdefg}System.out.println("\n" + buffer.position());//7,读取的过程中position再次移动到了7的位置//clear方法,并未真的清空缓冲区,而是是position为0,limit为capacity。是buffer处于写状态,写入数据时//里面存在的数据将会被覆盖。而compact是舍弃position前面的数据,然后将position的位置顶置为0,limit的位置capacity,//然后再在内容的后面追加内容//复制一个缓冲区buffer.position(3).limit(5);//3,4为debuffer = buffer.slice();while(buffer.hasRemaining()) { System.out.print((char)buffer.get());//de}}public static ByteBuffer defineBuffer() {// ByteBuffer buffer = ByteBuffer.allocate(10);byte[] array = new byte[10];ByteBuffer buffer = ByteBuffer.wrap(array);// 定义初始容量为10的字节缓冲区System.out.println(buffer.mark()); //java.nio.HeapByteBuffer[pos=0 lim=10 cap=10]System.out.println(buffer.position());//0,此时没有内容System.out.println(buffer.capacity());//10System.out.println(buffer.limit());//10return buffer;}}</span>
1 0
- java NIO Buffer常用方法
- Java NIO中Buffer常用方法的用法及理解
- java.nio.Buffer flip()方法
- java.nio.Buffer flip()方法
- java.nio.Buffer flip()方法
- java.nio.Buffer flip()方法
- java nio中buffer缓冲区一些方法
- java.nio.Buffer 中的 flip()方法
- java nio之Buffer
- java.nio.Buffer分析
- java.nio.Buffer分析
- Java NIO Buffer
- Java NIO(4-Buffer)
- Java NIO Buffer
- Java NIO 之 buffer
- Java NIO---buffer
- Java Nio Buffer
- Java NIO Buffer
- 洛谷 1072
- 奥运奖牌中文系统(IO版)
- DOM事件学习笔记
- 适配器模式
- Android通过Get方法获取Json数据
- java NIO Buffer常用方法
- AJAX学习笔记
- JUC (Java Util Concurrency) 基础内容概述
- HDU - 2516 取石子游戏(斐波那契)
- 我的第一个Go网络程序,有点不完美
- jQuery学习笔记
- Trafodion 数据加载介绍
- 如何验证页面上GA监测代码是否添加正确
- poj2167 Irrelevant Elements