- Node.js 教程
- Node.js - 首頁
- Node.js - 簡介
- Node.js - 環境搭建
- Node.js - 第一個應用
- Node.js - REPL 終端
- Node.js - 命令列選項
- Node.js - 包管理器 (NPM)
- Node.js - 回撥函式概念
- Node.js - 上傳檔案
- Node.js - 傳送郵件
- Node.js - 事件
- Node.js - 事件迴圈
- Node.js - 事件發射器
- Node.js - 偵錯程式
- Node.js - 全域性物件
- Node.js - 控制檯
- Node.js - 程序
- Node.js - 應用程式擴充套件
- Node.js - 打包
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 緩衝區 (Buffers)
- Node.js - 流 (Streams)
- Node.js - 檔案系統
- Node.js MySQL
- Node.js - MySQL 入門
- Node.js - MySQL 建立資料庫
- Node.js - MySQL 建立表
- Node.js - MySQL 插入資料
- Node.js - MySQL 查詢資料
- Node.js - MySQL WHERE 條件
- Node.js - MySQL ORDER BY 排序
- Node.js - MySQL 刪除資料
- Node.js - MySQL 更新資料
- Node.js - MySQL JOIN 連線
- Node.js MongoDB
- Node.js - MongoDB 入門
- Node.js - MongoDB 建立資料庫
- Node.js - MongoDB 建立集合
- Node.js - MongoDB 插入資料
- Node.js - MongoDB 查詢資料
- Node.js - MongoDB 查詢
- Node.js - MongoDB 排序
- Node.js - MongoDB 刪除資料
- Node.js - MongoDB 更新資料
- Node.js - MongoDB 限制結果
- Node.js - MongoDB 連線
- Node.js 模組
- Node.js - 模組
- Node.js - 內建模組
- Node.js - 實用工具模組
- Node.js - Web 模組
- Node.js 有用資源
- Node.js - 快速指南
- Node.js - 有用資源
- Node.js - 討論
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());
輸出
在上面的例子中,我們使用了 tartgetStart、sourceStart 和 sourceEnd 引數。因此,從源緩衝區中選擇的字串是 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
