Node.js緩沖區(qū)– Node.js緩沖區(qū)是一個(gè)類,可幫助處理和使用八位位組流。在處理TCP數(shù)據(jù)流和文件系統(tǒng)操作時(shí),通常會(huì)出現(xiàn)八位字節(jié)流。
分配給緩沖區(qū)的原始內(nèi)存在Node.js V8堆內(nèi)存之外。
在本教程中,我們將學(xué)習(xí)如何
創(chuàng)建緩沖區(qū)
將數(shù)據(jù)寫(xiě)入緩沖區(qū)
從緩沖區(qū)讀取數(shù)據(jù)。
在Node.js中創(chuàng)建緩沖區(qū)的方法有很多種。我們將一個(gè)一個(gè)地研究它們。
要?jiǎng)?chuàng)建指定長(zhǎng)度的緩沖區(qū),請(qǐng)使用Buffer。allocUnsafe(int)方法。
語(yǔ)法
Buffer.allocUnsafe(bufferLength); |
const buf1 = Buffer.allocUnsafe(10);
bufferLength是一個(gè)整數(shù),指定要?jiǎng)?chuàng)建的緩沖區(qū)的長(zhǎng)度。
創(chuàng)建的緩沖區(qū)未初始化,這意味著它可以包含垃圾值。您可以使用fill()或write()方法覆蓋垃圾值。
若要?jiǎng)?chuàng)建指定長(zhǎng)度的零填充緩沖區(qū),請(qǐng)使用Buffer.alloc(int)方法。
語(yǔ)法
Buffer.alloc(bufferLength);
const buf1 = Buffer.alloc(10);
bufferLength是一個(gè)整數(shù),指定要?jiǎng)?chuàng)建的緩沖區(qū)的長(zhǎng)度。緩沖區(qū)包含用零填充的所有內(nèi)存位置。
Buffer.alloc()比 Buffer.allocUnsafe()慢。
若要?jiǎng)?chuàng)建指定長(zhǎng)度并填充有指定值的緩沖區(qū),請(qǐng)使用Buffer.alloc(int,int)方法。
語(yǔ)法
Buffer.alloc(bufferLength, value);
const buf1 = Buffer.allocUnsafe(10, 3);
bufferLength是一個(gè)整數(shù),指定要?jiǎng)?chuàng)建的緩沖區(qū)的長(zhǎng)度。緩沖區(qū)包含用value填充的所有內(nèi)存位置。
Buffer類有很多方法可以將不同格式的數(shù)據(jù)寫(xiě)入緩沖區(qū)。在本節(jié)中,我們將學(xué)習(xí)編寫(xiě)一個(gè)字符串以緩沖。
若要將字符串寫(xiě)入緩沖區(qū),請(qǐng)使用Buffer.write方法。
語(yǔ)法
Buffer.write(string[, offset[, length]][, encoding]);
const buf1 = Buffer.allocUnsafe(100); const len = buf1.write('welcomeuser',2,5,'utf8');
從offset開(kāi)始的字符串,按長(zhǎng)度提供的字符數(shù)將以指定的編碼格式寫(xiě)入緩沖區(qū)。
write()方法返回寫(xiě)入緩沖區(qū)的字節(jié)數(shù)。
要從緩沖區(qū)讀取字節(jié),請(qǐng)使用Buffer.values方法。
語(yǔ)法
Buffer.values();
創(chuàng)建并返回buf1值(字節(jié))的迭代器。在for..of語(yǔ)句中使用Buffer時(shí),將自動(dòng)調(diào)用此函數(shù)。
const buf1 = Buffer.allocUnsafe(11); const len = buf1.write('welcomeuser'); for(const byt of buf1.values()){ console.log(byt); }
輸出結(jié)果
$ node read-buffer.js 119 101 108 99 111 109 101 117 115 101 114
在本Node.js教程– Node.js緩沖區(qū)中,我們學(xué)習(xí)了如何在Node.js中創(chuàng)建,寫(xiě)入和讀取緩沖區(qū)。在接下來(lái)的教程中,我們將學(xué)習(xí)一些關(guān)于緩沖區(qū)的有趣操作。