JAVA高级基础(46)---NIO之Buffer常用方法

版权声明:如需转载请标明出处 https://blog.csdn.net/yj201711/article/details/84950048

常见实现

  • ByteBuffer
  • CharBuffer
  • ShortBuffer
  • IntBuffer
  • LongBuffer
  • FloatBuffer
  • DoubleBuffer

缓冲区的使用

  1. 建立缓冲区,  分配容量    ByteBuffer  buf  = ByteBuffer.allocate(capacity);
  2. 装载数据:put();及其重载方法
  3. 改变缓冲区的读写模式:flip();
  4. 获取数据:get();及其重载方法
  5. 标记:mark()/resert();
  6. 判断

remaining()返回当前位置与限制之间的元素数
hasRemaining()判断当前位置与限制之间是否还有元素存在
isReadOnly()判断此缓冲区是否为制度缓冲区
buf.clear();//清空缓冲区 只是将缓冲区的三个属性恢复到初始状态   其中的数据依然存在

package org.lanqiao.nio.buffer;

import java.nio.ByteBuffer;

public class BufferDemo {
	public static void main(String[] args) {
		//开辟缓冲区  分配缓冲区
		ByteBuffer buf = ByteBuffer.allocate(1024);
		//存入数据
		buf.put((byte) 2);//1
		buf.putInt(10);//4
		buf.putDouble(12.2);//8
		buf.putChar('太');//2
		buf.putLong(11L);//8
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		buf.flip();//从写模式切换为读模式
		System.out.println(buf.get());
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		System.out.println(buf.getInt());
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		System.out.println(buf.getDouble());
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		buf.mark();
		System.out.println(buf.getChar());
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		/*buf.reset();
		buf.flip();
		buf.putChar('中');
		buf.flip();
		System.out.println(buf.getChar());*/
		//System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		buf.putChar(15,'原');
		System.out.println(buf.getChar());
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		System.out.println(buf.getInt());
		System.out.println(buf.hasRemaining());
		System.out.println(buf.getChar());
		
		
		
		buf.rewind();
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		
		buf.clear();//清空缓冲区 只是将缓冲区的三个属性恢复到初始状态   其中的数据依然存在
		System.out.println("位置:" + buf.position() +"    限制:" + buf.limit()+"   容量:" + buf.capacity());
		System.out.println(buf.get());
	}
}

猜你喜欢

转载自blog.csdn.net/yj201711/article/details/84950048
今日推荐