- Assertion Testing
- Buffer
- C/C++ Addons
- Child Processes
- Cluster
- Command Line Options
- Console
- Crypto
- Debugger
- DNS
- Domain
- Errors
- Events
- File System
- Globals
- HTTP
- HTTPS
- Modules
- Net
- OS
- Path
- Process
- Punycode
- Query Strings
- Readline
- REPL
- Stream
- String Decoder
- Timers
- TLS/SSL
- TTY
- UDP/Datagram
- URL
- Utilities
- V8
- VM
- ZLIB
Node.js v4.9.1 Documentation
Table of Contents
- Buffer
Buffer.from(),Buffer.alloc(), andBuffer.allocUnsafe()- Buffers and Character Encodings
- Buffers and TypedArray
- Buffers and ES6 iteration
- The
--zero-fill-bufferscommand line option - Class: Buffer
- new Buffer(array)
- new Buffer(buffer)
- new Buffer(arrayBuffer)
- new Buffer(size)
- new Buffer(str[, encoding])
- Class Method: Buffer.alloc(size[, fill[, encoding]])
- Class Method: Buffer.allocUnsafe(size)
- Class Method: Buffer.allocUnsafeSlow(size)
- Class Method: Buffer.byteLength(string[, encoding])
- Class Method: Buffer.compare(buf1, buf2)
- Class Method: Buffer.concat(list[, totalLength])
- Class Method: Buffer.from(array)
- Class Method: Buffer.from(arrayBuffer)
- Class Method: Buffer.from(buffer)
- Class Method: Buffer.from(str[, encoding])
- Class Method: Buffer.isBuffer(obj)
- Class Method: Buffer.isEncoding(encoding)
- buf[index]
- buf.compare(otherBuffer)
- buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])
- buf.entries()
- buf.equals(otherBuffer)
- buf.fill(value[, offset[, end]])
- buf.indexOf(value[, byteOffset][, encoding])
- buf.keys()
- buf.length
- buf.readDoubleBE(offset[, noAssert])
- buf.readDoubleLE(offset[, noAssert])
- buf.readFloatBE(offset[, noAssert])
- buf.readFloatLE(offset[, noAssert])
- buf.readInt8(offset[, noAssert])
- buf.readInt16BE(offset[, noAssert])
- buf.readInt16LE(offset[, noAssert])
- buf.readInt32BE(offset[, noAssert])
- buf.readInt32LE(offset[, noAssert])
- buf.readIntBE(offset, byteLength[, noAssert])
- buf.readIntLE(offset, byteLength[, noAssert])
- buf.readUInt8(offset[, noAssert])
- buf.readUInt16BE(offset[, noAssert])
- buf.readUInt16LE(offset[, noAssert])
- buf.readUInt32BE(offset[, noAssert])
- buf.readUInt32LE(offset[, noAssert])
- buf.readUIntBE(offset, byteLength[, noAssert])
- buf.readUIntLE(offset, byteLength[, noAssert])
- buf.slice([start[, end]])
- buf.toString([encoding[, start[, end]]])
- buf.toJSON()
- buf.values()
- buf.write(string[, offset[, length]][, encoding])
- buf.writeDoubleBE(value, offset[, noAssert])
- buf.writeDoubleLE(value, offset[, noAssert])
- buf.writeFloatBE(value, offset[, noAssert])
- buf.writeFloatLE(value, offset[, noAssert])
- buf.writeInt8(value, offset[, noAssert])
- buf.writeInt16BE(value, offset[, noAssert])
- buf.writeInt16LE(value, offset[, noAssert])
- buf.writeInt32BE(value, offset[, noAssert])
- buf.writeInt32LE(value, offset[, noAssert])
- buf.writeIntBE(value, offset, byteLength[, noAssert])
- buf.writeIntLE(value, offset, byteLength[, noAssert])
- buf.writeUInt8(value, offset[, noAssert])
- buf.writeUInt16BE(value, offset[, noAssert])
- buf.writeUInt16LE(value, offset[, noAssert])
- buf.writeUInt32BE(value, offset[, noAssert])
- buf.writeUInt32LE(value, offset[, noAssert])
- buf.writeUIntBE(value, offset, byteLength[, noAssert])
- buf.writeUIntLE(value, offset, byteLength[, noAssert])
- buffer.INSPECT_MAX_BYTES
- Class: SlowBuffer
Buffer#
Stability: 2 - Stable
Prior to the introduction of TypedArray in ECMAScript 2015 (ES6), the
JavaScript language had no mechanism for reading or manipulating streams
of binary data. The Buffer class was introduced as part of the Node.js
API to make it possible to interact with octet streams in the context of things
like TCP streams and file system operations.
Now that TypedArray has been added in ES6, the Buffer class implements the
Uint8Array API in a manner that is more optimized and suitable for Node.js'
use cases.
Instances of the Buffer class are similar to arrays of integers but
correspond to fixed-sized, raw memory allocations outside the V8 heap.
The size of the Buffer is established when it is created and cannot be
resized.
The Buffer class is a global within Node.js, making it unlikely that one
would need to ever use require('buffer').Buffer.
const buf1 = new Buffer(10);
// creates a buffer of length 10
// This is the same as Buffer.allocUnsafe(10), and the returned
// Buffer instance might contain old data that needs to be
// overwritten using either fill() or write().
const buf2 = new Buffer([1,2,3]);
// creates a buffer containing [01, 02, 03]
// This is the same as Buffer.from([1,2,3]).
const buf3 = new Buffer('test');
// creates a buffer containing ASCII bytes [74, 65, 73, 74]
// This is the same as Buffer.from('test').
const buf4 = new Buffer('tést', 'utf8');
// creates a buffer containing UTF8 bytes [74, c3, a9, 73, 74]
// This is the same as Buffer.from('tést', 'utf8').
const buf5 = Buffer.alloc(10);
// Creates a zero-filled Buffer of length 10.
const buf6 = Buffer.alloc(10, 1);
// Creates a Buffer of length 10, filled with 0x01.
const buf7 = Buffer.allocUnsafe(10);
// 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 either fill() or write().
const buf8 = Buffer.from([1,2,3]);
// Creates a Buffer containing [01, 02, 03].
const buf9 = Buffer.from('test');
// Creates a Buffer containing ASCII bytes [74, 65, 73, 74].
const buf8 = Buffer.from('tést', 'utf8');
// Creates a Buffer containing UTF8 bytes [74, c3, a9, 73, 74].
Buffer.from(), Buffer.alloc(), and Buffer.allocUnsafe()#
Historically, Buffer instances have been created using the Buffer
constructor function, which allocates the returned Buffer
differently based on what arguments are provided:
- Passing a number as the first argument to
Buffer()(e.g.new Buffer(10)), allocates a newBufferobject of the specified size. The memory allocated for suchBufferinstances is not initialized and can contain sensitive data. SuchBufferobjects must be initialized manually by using eitherbuf.fill(0)or by writing to theBuffercompletely. While this behavior is intentional to improve performance, development experience has demonstrated that a more explicit distinction is required between creating a fast-but-uninitializedBufferversus creating a slower-but-saferBuffer. - Passing a string, array, or
Bufferas the first argument copies the passed object's data into theBuffer. - Passing an
ArrayBufferreturns aBufferthat shares allocated memory with the givenArrayBuffer.
Because the behavior of new Buffer() changes significantly based on the type
of value passed as the first argument, applications that do not properly
validate the input arguments passed to new Buffer(), or that fail to
appropriately initialize newly allocated Buffer content, can inadvertently
introduce security and reliability issues into their code.
To make the creation of Buffer objects more reliable and less error prone,
new Buffer.from(), Buffer.alloc(), and