node js - Node js Buffers - node - webnode - node js - node js tutorial




What is Node.js Buffer?

  • Node.js provides Buffer class to store raw data similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap.
  • Buffer class is used because pure JavaScript is not nice to binary data. So, when dealing with TCP streams or the file system, it's necessary to handle octet streams.
  • Buffer class is a global class.
  • It can be accessed in application without importing buffer module.
 Node.js buffer image

Learn Node js - node js Tutorial - Node.js buffer image - node - Node js Examples

Related nodejs article tags - node js - node js tutorial - node js examples

Creating Buffers

  • Node Buffer can be constructed in different ways. Following are the three mostly used methods:
    • Create an uninitiated buffer: Following is the syntax of creating an uninitiated buffer of 10 octets:
var buf = new Buffer(10);  
    • Create a buffer from array: Following is the syntax to create a Buffer from a given array:
var buf = new Buffer([10, 20, 30, 40, 50]);   
    • Create a buffer from string: Following is the syntax to create a Buffer from a given string and optionally encoding type:
var buf = new Buffer("Simply Easy Learning", "utf-8");   
  • Though "utf8" is the default encoding, you can use any of the following encodings "ascii", "utf8", "utf16le", "ucs2", "base64" or "hex".

Writing to Buffers

Syntax

  • Following is the syntax of the method to write into a Node Buffer
buf.write(string[, offset][, length][, encoding])

Parameters

Here is the description of the parameters used

  • string − This is the string data to be written to buffer.
  • offset − This is the index of the buffer to start writing at. Default value is 0.
  • length − This is the number of bytes to write. Defaults to buffer.length.
  • encoding − Encoding to use. 'utf8' is the default encoding.

Return Value

  • This method returns the number of octets written.
  • If there is not enough space in the buffer to fit the entire string, it will write a part of the string.

Sample Code:

buf = new Buffer(256);
len = buf.write("Simply Easy Learning");

console.log("Octets written : "+  len);

Output:

Octets written : 20

Reading from Buffers

Syntax

  • Following is the syntax of the method to read data from a Node Buffer
buf.toString([encoding][, start][, end])

Parameters

Here is the description of the parameters used

  • encoding − Encoding to use. 'utf8' is the default encoding.
  • start − Beginning index to start reading, defaults to 0.
  • end − End index to end reading, defaults is complete buffer.

Return Value

  • This method decodes and returns a string from buffer data encoded using the specified character set encoding.

Sample Code:

buf = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
  buf[i] = i + 97;
}

console.log( buf.toString('ascii'));       // outputs: abcdefghijklmnopqrstuvwxyz
console.log( buf.toString('ascii',0,5));   // outputs: abcde
console.log( buf.toString('utf8',0,5));    // outputs: abcde
console.log( buf.toString(undefined,0,5)); // encoding defaults to 'utf8', outputs abcde

Output:

abcdefghijklmnopqrstuvwxyz
abcde
abcde
abcde

Convert Buffer to JSON

Syntax

  • Following is the syntax of the method to convert a Node Buffer into JSON object
buf.toJSON()

Return Value

  • This method returns a JSON-representation of the Buffer instance.

Sample Code:

var buf = new Buffer('Simply Easy Learning');
var json = buf.toJSON(buf);

console.log(json);

Output:

[ 83, 105, 109, 112, 108, 121, 32, 69, 97, 115, 121, 32, 76, 101, 97, 114, 110, 105, 110,
   103 ]
Related nodejs article tags - node js - node js tutorial - node js examples

Concatenate Buffers

Syntax

  • Following is the syntax of the method to concatenate Node buffers to a single Node Buffer
Buffer.concat(list[, totalLength])

Parameters

Here is the description of the parameters used

  • list − Array List of Buffer objects to be concatenated.
  • totalLength − This is the total length of the buffers when concatenated.

Return Value

  • This method returns a Buffer instance.

Sample Code:

var buffer1 = new Buffer('Wikitechy');
var buffer2 = new Buffer('Simply Easy Learning');
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log("buffer3 content: " + buffer3.toString());

Output:

buffer3 content: Wikitechy Simply Easy Learning

Compare Buffers

Syntax

  • Following is the syntax of the method to compare two Node buffers
buf.compare(otherBuffer);

Parameters

Here is the description of the parameters used

  • otherBuffer − This is the other buffer which will be compared with buf

Return Value

  • Returns a number indicating whether it comes before or after or is the same as the otherBuffer in sort order.

Sample Code:

var buffer1 = new Buffer('ABC');
var buffer2 = new Buffer('ABCD');
var result = buffer1.compare(buffer2);

if(result < 0) {
   console.log(buffer1 +" comes before " + buffer2);
}else if(result == 0){
   console.log(buffer1 +" is same as " + buffer2);
}else {
   console.log(buffer1 +" comes after " + buffer2);
}

Output:

ABC comes before ABCD

Copy Buffer

Syntax

  • Following is the syntax of the method to copy a node buffer
buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])

Parameters

Here is the description of the parameters used

  • targetBuffer − Buffer object where buffer will be copied.
  • targetStart − Number, Optional, Default: 0
  • sourceStart − Number, Optional, Default: 0
  • sourceEnd − Number, Optional, Default: buffer.length

Return Value

  • No return value. Copies data from a region of this buffer to a region in the target buffer even if the target memory region overlaps with the source.
  • If undefined, the targetStart and sourceStart parameters default to 0, while sourceEnd defaults to buffer.length.

Sample Code:

var buffer1 = new Buffer('ABC');

//copy a buffer
var buffer2 = new Buffer(3);
buffer1.copy(buffer2);
console.log("buffer2 content: " + buffer2.toString());

Output:

buffer2 content: ABC

Slice Buffer

Syntax

  • Following is the syntax of the method to get a sub-buffer of a node buffer
buf.slice([start][, end])

Parameters

Here is the description of the parameters used

  • start − Number, Optional, Default: 0
  • end − Number, Optional, Default: buffer.length

Return Value

  • Returns a new buffer which references the same memory as the old one, but offset and cropped by the start (defaults to 0) and end (defaults to buffer.length) indexes.
  • Negative indexes start from the end of the buffer.

Sample Code:

var buffer1 = new Buffer('Wikitechy');

//slicing a buffer
var buffer2 = buffer1.slice(0,4);
console.log("buffer2 content: " + buffer2.toString());

Output:

buffer2 content: Wiki

Buffer Length

Syntax

  • Following is the syntax of the method to get a size of a node buffer in bytes
buf.length;

Return Value

  • Returns the size of a buffer in bytes.

Sample Code:

var buffer = new Buffer('Wikitechy');

//length of the buffer
console.log("buffer length: " + buffer.length);

Output:

buffer length: 9
Related nodejs article tags - node js - node js tutorial - node js examples

Methods Reference

  • Following is a reference of Buffers module available in Node.js. For more detail, you can refer to the official documentation.

Class Methods

S.No. Method & Description
1 Buffer.isEncoding(encoding)

Returns true if the encoding is a valid encoding argument, false otherwise.

2 Buffer.isBuffer(obj)

Tests if obj is a Buffer.

3 Buffer.byteLength(string[, encoding])

Gives the actual byte length of a string. encoding defaults to 'utf8'. It is not the same as String.prototype.length, since String.prototype.length returns the number of characters in a string.

4 Buffer.concat(list[, totalLength])

Returns a buffer which is the result of concatenating all the buffers in the list together.

5 Buffer.compare(buf1, buf2)

The same as buf1.compare(buf2). Useful for sorting an array of buffers.


This wikitechy technological portal provides you whole lot of information related to the topics such as mongodb tutorial , what is node js , express js tutorial , node js tutorial pdf , learn node js , node js tutorial for beginners , node js tutorial w3schools , node js express , javascript for beginners , node js express tutorial , node js tutorial point , node js book , node js server , note js , node js mongodb , what is node js used for , why node js , node tutorial , node js basics , tutorialspoint node js , node express , node js sample application , nodeschool , node js for beginners , express tutorial , node js application , use of node js , npm tutorial , node js org , node js training , node js online training , node js tutorial beginner , how to use node js , node js hello world , express node js , node js mongodb tutorial , nodejs http , why use node js

Related Searches to Node.js Buffers