1. 程式人生 > >node.js第三天

node.js第三天

建立buffer類

Buffer.alloc(size[, fill[, encoding]]): 返回一個指定大小的 Buffer 例項,如果沒有設定 fill,則預設填滿 0 Buffer.allocUnsafe(size): 返回一個指定大小的 Buffer 例項,但是它不會被初始化,所以它可能包含敏感的資料 Buffer.allocUnsafeSlow(size) Buffer.from(array): 返回一個被 array 的值初始化的新的 Buffer 例項(傳入的 array 的元素只能是數字,不然就會自動被 0 覆蓋) Buffer.from(arrayBuffer[, byteOffset[, length]]): 返回一個新建的與給定的 ArrayBuffer 共享同一記憶體的 Buffer。 Buffer.from(buffer): 複製傳入的 Buffer 例項的資料,並返回一個新的 Buffer 例項 Buffer.from(string[, encoding]): 返回一個被 string 的值初始化的新的 Buffer 例項

//長度為10被0填充
const buff = Buffer.alloc(10);
//用1填充
const buff1 = Buffer.alloc(10, 1);
//不被填充
const buff2 = Buffer.allocUnsafe(10);
//用陣列初始化
const buff3 = Buffer.from([1, 2, 3]);
// 建立一個包含 UTF-8 位元組 [0x74, 0xc3, 0xa9, 0x73, 0x74] 的 Buffer。
const buf5 = Buffer.from('tést');
console.log(buf5);
//寫入緩衝區
// buf.write(string[, offset[, length]][, encoding])
buf = Buffer.alloc(20);
var len = buff.write("他");
console.log(len);
//從緩衝區讀取資料
var str = buff.toString();
console.log(str);
//將buffer裝換成json
var json = buff.toJSON();
console.log(json);

寫入緩衝區

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

string - 寫入緩衝區的字串。

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

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

encoding - 使用的編碼。預設為 ‘utf8’ 。

const buf4 = Buffer.alloc(19);
buf4.write("uhjgfhy");
let str = buf4.toString();
console.log(buf4); //<Buffer 75 68 6a 67 66 68 79 00 00 00 00 00 00 00 00 00 00 00 00>
console.log(str); //uhjgfhy

讀取資料

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

encoding - 使用的編碼。預設為 ‘utf8’ 。

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

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

const buf4 = Buffer.alloc(19);
buf4.write("uhjgfhy");
let str = buf4.toString();


轉化為JSON

buf.toJSON()

const buf = Buffer.from([1, 2, 3]);
let json = buf.toJSON();
console.log(json)//{ type: 'Buffer', data: [ 1, 2, 3 ] }

緩衝區合併

Buffer.concat(list[, totalLength]) list - 用於合併的 Buffer 物件陣列列表。

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

var buffer1 = Buffer.from(('1'));
var buffer2 = Buffer.from(('2'));
var buffer3 = Buffer.concat([buffer1, buffer2]);
console.log("buffer3 內容: " + buffer3.toString());//buffer3 內容: 12

緩衝區比較

buf.compare(otherBuffer); 返回一個數字,表示 buf 在 otherBuffer 之前,之後或相同。

拷貝緩衝區

buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]]) targetBuffer - 要拷貝的 Buffer 物件。

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

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

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

let buf1 = Buffer.from("abcd");
let buf2 = Buffer.from('efg');
buf2.copy(buf1, 2);//將buf2插入到buf1的第二位置並且buf1 2後面的都沒有了
console.log(buf1.toString());//abef

緩衝區裁剪

buf.slice([start[, end]]) start - 數字, 可選, 預設: 0

end - 數字, 可選, 預設: buffer.length 不包含end這個位置的值

let buf1 = Buffer.from("abcd");
let buf2 = buf1.slice(0, 2);//ab 
console.log(buf2.toString()); //ab

緩衝區長度

buf.length()