JAVA高階基礎(46)---NIO之Buffer常用方法
阿新 • • 發佈:2018-12-15
常見實現
- ByteBuffer
- CharBuffer
- ShortBuffer
- IntBuffer
- LongBuffer
- FloatBuffer
- DoubleBuffer
緩衝區的使用
- 建立緩衝區, 分配容量 ByteBuffer buf = ByteBuffer.allocate(capacity);
- 裝載資料:put();及其過載方法
- 改變緩衝區的讀寫模式:flip();
- 獲取資料:get();及其過載方法
- 標記:mark()/resert();
- 判斷
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()); } }