• Node.js Video Tutorials

Node.js - Buffer.copy() 方法



NodeJS 的 Buffer.copy() 方法將源緩衝區物件的內容複製到目標緩衝區。即使兩個緩衝區之間存在記憶體重疊,內容也會被複制。

語法

以下是 NodeJS copy() 方法的語法:

buf.copy( target, targetStart, sourceStart, sourceEnd )

引數

buffer.copy() 方法接受四個引數。第一個引數 target 是必需的,其餘引數是可選的。

  • target −這是必需引數。它是目標緩衝區物件,源緩衝區物件將被複制到其中。

  • targetStart −它指的是目標緩衝區中開始寫入的偏移量。預設為 0。

  • sourceStart −它指的是源緩衝區中開始複製的偏移量。預設為 0。

  • sourceEnd −它指的是源緩衝區中停止複製的偏移量。預設值為源緩衝區的長度。

返回值

buffer.copy() 方法返回已複製的位元組數。

示例

使用 NodeJS buffer.copy() 方法將內容從一個緩衝區複製到另一個緩衝區。

var buffer1 = Buffer.from('testing');
var buffer2 = Buffer.from('HELLO');
buffer2.copy(buffer1);
console.log("After copying the string in buffer1 is "+ buffer1.toString());

輸出

在這個例子中,我們將緩衝區 buffer2 中的字串 HELLO 複製到緩衝區 buffer1。當您列印 buffer1 的內容時,您將得到以下輸出:

After copying the string in buf1 is HELLOng

示例

在這個例子中,我們將使用 targetStart 引數進行復制。

var buffer1 = Buffer.from('testing');
var buffer2 = Buffer.from('HELLO');
buffer2.copy(buffer1, 3);
console.log("After copying the string in buffer1 is "+ buffer1.toString());

輸出

在上面的例子中,我們使用了 targetStart 為 3。因此在 buffer1 中字串是 testing,從偏移量 3 到字串的末尾將複製 buffer2 的內容。

After copying the string in buffer1 is tesHELL

示例

在這個例子中,我們將使用 targetStart 和 sourceStart 來使用 buffer.copy() 複製內容。

var buffer1 = Buffer.from('testing');
var buffer2 = Buffer.from('HELLO');
buffer2.copy(buffer1, 2, 2);
console.log("After copying the string in buffer1 is "+ buffer1.toString());

輸出

在上面的例子中,我們使用了 targetStart 為 2。因此在 buffer1 中字串是 testing,從偏移量 2 到字串的末尾將複製 buffer2 的內容。我們使用了 sourceStart,所以 buffer2 中的字串是 HELLO,要複製的內容將從偏移量 2 開始,即 LLO 將被複制到 buffer1。

After copying the string in buffer1 is teLLOng

示例

現在讓我們使用 Buffer.copy() 方法的所有引數。

var buffer1 = Buffer.from('testing');
var buffer2 = Buffer.from('HELLO');
buffer2.copy(buffer1, 2, 0, 3);
console.log("After copying the string in buffer1 is "+ buffer1.toString());

輸出

在上面的例子中,我們使用了 tartgetStartsourceStartsourceEnd 引數。因此,從源緩衝區中選擇的字串是 HEL,它將從 buffer1 的偏移量 2 開始複製。

After copying the string in buffer1 is teHELng

示例

在這個例子中,我們將使用 Buffer.allocUnsafe() 方法建立一個緩衝區,然後使用 Unicode 值向其中新增字元。

var buffer1 = Buffer.allocUnsafe(10);
var buffer2 = Buffer.from('HELLO');
for (let i = 0; i < 10; i++) {
   
   //109 is for character m, it will increment and n,o,p..will get added.
   buffer1[i] = i + 109;
}
   
console.log("The string in buffer1 is "+buffer1.toString());   
buffer2.copy(buffer1, 2);      
console.log("The string in buffer1 is "+buffer1.toString());

輸出

我們使用 Buffer.allocUnsafe() 在 buffer1 中分配了 10 個位元組。之後,我們使用 for 迴圈從 0 到 10 迴圈,並將字元新增到 buffer1。buffer2 的內容將從 buffer1 中偏移量 2 開始複製到 buffer1 中。

當您執行上述程式碼時,輸出如下所示:

The string in buffer1 is mnopqrstuv
The string in buffer1 is mnHELLOtuv

示例

當您嘗試使用 targetStart 和 sourceStart 引數的值小於零時,它將丟擲錯誤。

讓我們看看當我們使用 targetStart 和 sourceStart 小於零時的例子。

var buffer1 = Buffer.from('testing');
var buffer2 = Buffer.from('HELLO');
buffer2.copy(buffer1, -1, -1, 3);
console.log("After copying the string in buffer1 is "+ buffer1.toString());

輸出

由於我們使用了 targetStart 和 sourceStart 為 -1,您將得到上面的錯誤。預設值為 0,小於 0 將丟擲錯誤,如下所示:

RangeError: Index out of range
nodejs_buffer_module.htm
廣告
© . All rights reserved.