A buffer is a piece of memory that stores binary data. It is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap. Buffers are used to represent a sequence of binary data in Node.js and are often used when interacting with data that is stored in a binary format, such as a file on the filesystem or an HTTP response from a server.
Buffers can be created in several ways in Node.js:
const buf1 = Buffer.alloc(10); // creates a buffer of 10 bytes const buf2 = Buffer.from([1, 2, 3]); // creates a buffer from an array of bytes const buf3 = Buffer.from('hello world'); // creates a buffer from a string
Once a buffer has been created, you can read from or write to it using the array-like syntax provided by Node.js.
const buf = Buffer.alloc(10); // write to the buffer buf = 0x61; buf = 0x62; buf = 0x63; // read from the buffer console.log(buf); // prints 97 (0x61) console.log(buf); // prints 98 (0x62) console.log(buf); // prints 99 (0x63)
You can also use the
buf.slice() method to create a new buffer that references the same memory as the original buffer, but with a different offset and length. This can be useful for processing large buffers in chunks.
const buf = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); const sub1 = buf.slice(0, 5); // sub1 contains [1, 2, 3, 4, 5] const sub2 = buf.slice(5); // sub2 contains [6, 7, 8, 9, 10]