java8新特性nio緩沖區(qū)(buffer)的數(shù)據(jù)存儲(chǔ)。
bytebuffer,charbuffer,shortbuffer,intbuffer,longbuffer,floatbuffer,
doublebuffer.
1、緩沖區(qū)在java nio中負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)。緩沖區(qū)就是數(shù)組。用于存儲(chǔ)不同數(shù)據(jù)類型的數(shù)據(jù)。根據(jù)數(shù)據(jù)類型不同(boolean除外),提供了相應(yīng)類型的緩沖區(qū)。
bytebuffer,charbuffer,shortbuffer,intbuffer,longbuffer,floatbuffer,
doublebuffer.
上述緩沖區(qū)的管理方式幾乎一致,通過allocate()獲取緩沖區(qū)。
//分配一個(gè)指定大小的緩沖區(qū)bytebuffer bytebuffer = bytebuffer.allocate(1024);
2、緩沖區(qū)中的四個(gè)核心屬性:
capacity:容量,表示緩沖區(qū)中最大存儲(chǔ)數(shù)據(jù)的容量。一旦聲明不能改變。
3、limit:界限,表示緩沖區(qū)中可以操作數(shù)據(jù)的大小。(limit后所得數(shù)據(jù)不能進(jìn)行讀寫)。
4、position:位置,表示緩沖區(qū)中正在操作數(shù)據(jù)的位置。
position<=limit<=capacity
5、bytebuffer的基本使用。
緩沖區(qū)存取數(shù)據(jù)的兩個(gè)核心方法:
put():存入數(shù)據(jù)到緩沖區(qū)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
//分配一個(gè)指定大小的緩沖區(qū) bytebuffer bytebuffer = bytebuffer.allocate( 1024 ); system.out.println(bytebuffer.position()); system.out.println(bytebuffer.limit());; system.out.println(bytebuffer.capacity()); //利用put方法存入數(shù)據(jù)到緩沖區(qū)中 string str = "abcde" ; bytebuffer.put(str.getbytes()); |
6、bytebuffer的基本使用。
緩沖區(qū)存取數(shù)據(jù)的兩個(gè)核心方法:
get():獲取緩沖區(qū)的數(shù)據(jù)
1
2
3
4
5
6
7
|
//4、利用get()讀取緩沖區(qū)的數(shù)據(jù) byte [] dst = new byte [bytebuffer.limit()]; bytebuffer.get(dst); system.out.println( new string(dst, 0 ,dst.length)); |
7、調(diào)用flip()讀數(shù)據(jù)模式之后
//3、切換成讀取數(shù)據(jù)模式bytebuffer.flip();
8、調(diào)用flip()操作之后:
9、rewind()方法:可重復(fù)讀:
1
2
3
4
5
6
7
8
9
|
bytebuffer.rewind(); system.out.println( "----------rewind()-------------" ); system.out.println(bytebuffer.position()); system.out.println(bytebuffer.limit());; system.out.println(bytebuffer.capacity()); |