1. 程式人生 > >Node.js 第七章- Buffer(緩衝區) 下

Node.js 第七章- Buffer(緩衝區) 下

一,建立Buffer類

1.Buffer提供以下API建立Buffer類

1.1Buffer.alloc(size[, fill[, encoding ]]): 返回一個制定大小的Buffer例項,如果沒有設定fill,則預設填滿0

1.2Buffer.allocUnsafe(size):  返回一個制定大小的Buffer例項,但是它不會被初始化,所以它可能包含敏感的資料。

1.3Buffer.allocUnsafeSlow(size)

1.4Buffer.from(array): 返回一個被array的值初始化的新的Buffer例項(傳入的array的元素只能是數字,不然就會自動被0覆蓋)

1.5Buffer.from(arrayBuffer[, byteOffset[, length]]) : 返回一個新建的與給定的ArrayBuffer共享童一個記憶體的Buffer。

1.6Buffer.from(buffer): 複製傳入的Buffer例項的資料,並返回一個新的Buffer例項

1.7Buffer.from(string[, encoding]) : 返回一個被string的值初始化的新的Buffer例項

二,寫入緩衝區

buf.write(string[, offset[, length]][.encoding])

1.1 string - 寫入緩衝區的字串

1.2 offset - 緩衝區開始寫入的索引值,預設為0

1.3 length - 寫入的位元組數,預設為buffer.length

1.4 encoding - 使用的編碼。預設為'utf8'.

PS : 根據encoding的字元編碼寫入string到buf中的offset位置。

length引數是寫入的位元組數。

如果buf沒有足夠的 空間儲存整個字串,則只會寫入string的一部分,只部分解碼的字元不會被寫入。

返回值:

返回實際寫入的大小。如果buffer空間不足,則只會寫入部分字串。

三,從緩衝區中讀取資料

語法

buf.toString([encoding[, start[, end]]])

1.1 encoding - 使用的編碼。 預設為'utf8'.

1.2 start - 制定開始讀取的索引位置,預設為0

1.3 end - 結束位置,預設為緩衝區的末尾

 

返回值:

解碼緩衝區資料並使用制定的編碼返回字串。

四,將Buffer轉換為JSON物件

語法

buf.toJSON()

返回JSON物件

五,緩衝區合併

語法

Buffer.concat(list[, totalLength])

引數

1.1 list - 用於合併的Buffer物件陣列列表

1.2 totalLength - 制定合併後Buffer物件的總長度。

例子:

六,緩衝區比較

該方法在 Node.js v0.12.2 版本引入

語法

buf.compare(otherBuffer);

引數

1.1 otherBuffer - 與buf物件比較的另外一個Buffer物件。

返回值

返回一個數字,表示buf在otherBuffer之前,之後或相同。

例項如下:

 

七,拷貝緩衝區

語法

Node緩衝區拷貝語法:

buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]]) 

引數

1.targetBuffer - 要拷貝的Buffer物件

2.targetStart - 數字,可選,預設: 0

3.sourceStart - 數字,可選,預設: 0

4.sourceEnd - 數字,可選,預設: buffer.length

返回值

沒有返回值。

例項如下:

 

 八,緩衝區裁剪

Node緩衝區裁剪語法

buf.slice([start[, end]])

引數

1.start - 數字,可選,預設:0

2.end - 數字,可選,預設: buffer.length

返回值

返回一個新的緩衝區,它和舊的緩衝區指向同一塊記憶體,但是從索引start到end的位置剪下

例項

 

九,緩衝區長度

語法

Node緩衝區長度計算語法(是buffer物件所分配的記憶體數,它不會隨著這個buffer物件內容的改變而改變)

buf.length;

返回值

返回Buffer物件所佔據的記憶體長度。

例項