Node.js - buffers guide

Published on

Buffers in nodejs refers to the Buffer class (which is a sub class of the Uint8Array in JS)

When you receive data from things like fs.readFile(), you get a Buffer instance holding that raw data.

They are also useful if you need to manipulate binary data.

https://nodejs.org/api/buffer.html

Buffer objects are used to represent a fixed-length sequence of bytes. Many Node.js APIs support Buffers.

The Buffer class is a subclass of JavaScript's Uint8Array class and extends it with methods that cover additional use cases. Node.js APIs accept plain Uint8Arrays wherever Buffers are supported as well.

While the Buffer class is available within the global scope, it is still recommended to explicitly reference it via an import or require statement.

Examples from the docs:

import { Buffer } from 'node:buffer';

// Creates a zero-filled Buffer of length 10.
const buf1 = Buffer.alloc(10);

// Creates a Buffer of length 10,
// filled with bytes which all have the value `1`.
const buf2 = Buffer.alloc(10, 1);

// Creates an uninitialized buffer of length 10.
// This is faster than calling Buffer.alloc() but the returned
// Buffer instance might contain old data that needs to be
// overwritten using fill(), write(), or other functions that fill the Buffer's
// contents.
const buf3 = Buffer.allocUnsafe(10);

// Creates a Buffer containing the bytes [1, 2, 3].
const buf4 = Buffer.from([1, 2, 3]);

// Creates a Buffer containing the bytes [1, 1, 1, 1] – the entries
// are all truncated using `(value & 255)` to fit into the range 0–255.
const buf5 = Buffer.from([257, 257.5, -255, '1']);

// Creates a Buffer containing the UTF-8-encoded bytes for the string 'tést':
// [0x74, 0xc3, 0xa9, 0x73, 0x74] (in hexadecimal notation)
// [116, 195, 169, 115, 116] (in decimal notation)
const buf6 = Buffer.from('tést');

// Creates a Buffer containing the Latin-1 bytes [0x74, 0xe9, 0x73, 0x74].
const buf7 = Buffer.from('tést', 'latin1');

How to convert a buffer to a string (toString())

Call the toString() function:

console.log(yourBuffer.toString()); 

How to join two buffers (concat)

const b1 = Buffer.from('Hello, ');
const b2 = Buffer.from('World!');

const joinedBuffer = Buffer.concat([b1, b2]);

console.log(joinedBuffer.toString()); 

How to slice (split) a Buffer

const buffer = Buffer.from('Some long string here');
const slice = buffer.slice(5, 10);