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物件所佔據的記憶體長度。
例項