1、緩衝區(buffer)
在nio中負責資料的訪問。緩衝區就是陣列,用於儲存不同資料型別的資料,根據資料型別不同(boolean除外),提供了相應型別的緩衝區:bytebuffer,charbuffer,shortbuffer,intbuffer,longbuffer,floatbuffer,doublebuffer。
①管理方式基本一致,通過allocate()獲取緩衝區
bytebuffer buf = bytebuffer.allocate(512);
②緩衝區訪問資料的方法:
put():存入資料到緩衝區
get():獲取緩衝區中的資料
③緩衝區四個核心屬性
capacity:容量,緩衝區中最大的儲存容量,一旦宣告不能改變。
limit:界限,緩衝區中可以運算元據的大小,(limit後的資料不能讀寫)
position:位置,緩衝區中正在操作的位置
mark:標記,表示記錄當前position的位置。可以通過reset()恢復到mark的位置
mark <= position <= limit <= capacity
測試**:
string str = "12345";
bytebuffer buf = bytebuffer.allocate(512);//分配制定大小的緩衝區
system.out.println(buf.position());//0
system.out.println(buf.limit());//512
system.out.println(buf.capacity());//512
buf.put(str.getbytes());//將資料放入緩衝區
system.out.println(buf.position());//5
system.out.println(buf.limit());//512
system.out.println(buf.capacity());//512
buf.flip();//切換成讀取資料模式
system.out.println(buf.position());//0
system.out.println(buf.limit());//5
system.out.println(buf.capacity());//512
byte des = new byte[buf.limit()];
buf.get(des);//讀取緩衝區資料
system.out.println(new string(des,0,des.length));//12345
system.out.println(buf.position());//5
system.out.println(buf.limit());//5
system.out.println(buf.capacity());//512
buf.rewind();//可重複讀
system.out.println(buf.position());//0
system.out.println(buf.limit());//5
system.out.println(buf.capacity());//512
buf.clear();//清空緩衝區,但是緩衝區的資料依然存在,處於「被遺忘」狀態
system.out.println(buf.position());//0
system.out.println(buf.limit());//512
system.out.println(buf.capacity());//512
system.out.println((char) buf.get());//1 說明資料依然存在
Java NIO 之 Buffer緩衝區
容量 capacity 緩衝區能夠容納的資料元素的最大數量。這一容量在緩衝區建立時被設定,並且永遠不能被改變 上界 limit 緩衝區的第乙個不能被讀或寫的元素。或者說,緩衝區中現存元素的計數。要是position已經到達limit的位置,此時再呼叫get 方法會報indexoutofbound c...
Java NIO 三 緩衝區Buffer
緩衝區本質上是一塊可以寫入資料,然後可以從中讀取資料的記憶體。這塊記憶體被包裝成nio buffer物件,並提供了一組方法,用來方便的訪問該塊記憶體。capacity capacity代表著buffer的固定大小值,能存放的最大值不超過capacity。position limit mark buf...
javaNIO學習筆記之緩衝區Buffer
buffer有四個屬性 1 capacit 容量 2 limit 上界 3 position 位置 4 mark 標記 絕對儲存不會影響緩衝區的位置屬性 存和取的方法 public abstract byte get public abstract byte get int index public...