Open In App

Node.js filehandle.appendFile() Method

Last Updated : 10 Jul, 2020
Improve
Improve
Like Article
Like
Save
Share
Report

The filehandle.appendFile() method is defined in the File System module of Node.js. The File System module is basically to interact with the hard disk of the user’s computer. The appendFile() method is used to asynchronously append new data in the existing file or if the file does not exist then the file is created first and after that given data is appended to it.

Syntax:

filehandle.appendFile(data, options);

Parameters: This method accept two parameter as mentioned above and described below:

  • data: It is a String or Buffer that is going to append to the target file.
  • options: It is an optional parameter that affects the output in someway accordingly we provide it to the function call or not.
    • encoding: It specifies the encoding technique, default is ‘UTF8’.

Approach: The fs.promises.open(path, mode) method returns a promise that resolved with the filehandle object. First, we create a filehandle object and after that proceed with appendFile() method with the help of this.

When operating on filehandles, the mode cannot be changed from what it was set to with fs.promises.open(), therefore we make sure to add ‘a’ or ‘a+’ to the mode when invoking fs.promises.open() method otherwise appendFile() method just acts as writeFile() method.

Example 1: This example illustrates how new data appended to a previously existing files.




// Importing File System and Utilities module
const fs = require('fs')
  
// fs.readFileSync(() method reads the file
// and returns buffer form of the data 
const oldBuffer = fs.readFileSync('./testFile.txt')
  
// File content before append 
const oldContent = oldBuffer.toString()
console.log(`\nBefore Append: ${oldContent}\n`)
  
const appendDataToFile = async (path, data) => {
    let filehandle = null
  
    try {
        // Mode 'a' allows to append new data in file
        filehandle = await fs.promises.open(path, mode = 'a')
  
        // Append operation
        await filehandle.appendFile(data)
    } finally {
        if (filehandle) {
  
            // Close the file if it is opened.
            await filehandle.close();
        }
    }
  
    const newBuffer = fs.readFileSync('./testFile.txt')
  
    // File content after append 
    const newContent = newBuffer.toString()
    console.log(`After Append: ${newContent}`)
}
  
appendDataToFile('./testFile.txt'
        '\nHey, I am newly added..!!')
    .catch(err => {
        console.log(`Error Occurs, Error code -> 
            ${err.code}, Error NO -> ${err.errno}`)
    })


Output:

Example 2: This example illustrates how data appended to the newly created file at run time.




// Importing File System and Utilities module
const fs = require('fs')
  
const appendDataToFile = async (path, data) => {
    let filehandle = null
  
    try {
  
        // Mode 'a' allows to append new data in file
        filehandle = await fs.promises.open(path, mode = 'a')
  
        // Append operation
        await filehandle.appendFile(data)
    } finally {
        if (filehandle) {
  
            // Close the file if it is opened.
            await filehandle.close();
        }
    }
  
    // fs.readFileSync(() method reads the file
    // and returns buffer form of the data 
    const buff = fs.readFileSync('./testFile.txt')
  
    // File content after append 
    const content = buff.toString()
    console.log(`\nContent : ${content}`)
}
  
appendDataToFile('./testFile.txt'
    '\nPlease add me to the test file..!!')
    .catch(err => {
        console.log(`Error Occurs, Error code -> 
            ${err.code}, Error NO -> ${err.errno}`)
    })


Directory structure before running the program:

Directory structure after running the program:

Output:



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads