Skip to main content

copy

method Buffer.copy
Jump to headingBuffer.copy(
target: Uint8Array,
targetStart?: number,
sourceStart?: number,
sourceEnd?: number,
): number

Copies data from a region of buf to a region in target, even if the targetmemory region overlaps with buf.

TypedArray.prototype.set() performs the same operation, and is available for all TypedArrays, including Node.js Buffers, although it takes different function arguments.

import { Buffer } from 'node:buffer';

// Create two `Buffer` instances.
const buf1 = Buffer.allocUnsafe(26);
const buf2 = Buffer.allocUnsafe(26).fill('!');

for (let i = 0; i < 26; i++) {
  // 97 is the decimal ASCII value for 'a'.
  buf1[i] = i + 97;
}

// Copy `buf1` bytes 16 through 19 into `buf2` starting at byte 8 of `buf2`.
buf1.copy(buf2, 8, 16, 20);
// This is equivalent to:
// buf2.set(buf1.subarray(16, 20), 8);

console.log(buf2.toString('ascii', 0, 25));
// Prints: !!!!!!!!qrst!!!!!!!!!!!!!
import { Buffer } from 'node:buffer';

// Create a `Buffer` and copy data from one region to an overlapping region
// within the same `Buffer`.

const buf = Buffer.allocUnsafe(26);

for (let i = 0; i < 26; i++) {
  // 97 is the decimal ASCII value for 'a'.
  buf[i] = i + 97;
}

buf.copy(buf, 0, 4, 10);

console.log(buf.toString());
// Prints: efghijghijklmnopqrstuvwxyz

Parameters Jump to heading

Jump to headingtarget: Uint8Array

A Buffer or Uint8Array to copy into.

optional
Jump to headingtargetStart: number = 0

The offset within target at which to begin writing.

optional
Jump to headingsourceStart: number = 0

The offset within buf from which to begin copying.

optional
Jump to headingsourceEnd: number = buf.length

The offset within buf at which to stop copying (not inclusive).

Return Type Jump to heading

number

The number of bytes copied.

Back to top