Node.js filehandle.appendFile() Method

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.

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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}`)
    })

chevron_right


Output:

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

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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}`)
    })

chevron_right


Directory structure before running the program:

Directory structure after running the program:

Output:




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.