node.jsfs

Write a line into a .txt file with Node.js


I want to use Node.js to create a simple logging system which prints a line before the past line into a .txt file. However, I don't know how the file system functionality from Node.js works.

Can someone explain it?


Solution

  • Inserting data into the middle of a text file is not a simple task. If possible, you should append it to the end of your file.

    The easiest way to append data some text file is to use build-in fs.appendFile(filename, data[, options], callback) function from fs module:

    var fs = require('fs')
    fs.appendFile('log.txt', 'new data', function (err) {
      if (err) {
        // append failed
      } else {
        // done
      }
    })
    

    But if you want to write data to log file several times, then it'll be best to use fs.createWriteStream(path[, options]) function instead:

    var fs = require('fs')
    var logger = fs.createWriteStream('log.txt', {
      flags: 'a' // 'a' means appending (old data will be preserved)
    })
    
    logger.write('some data') // append string to your file
    logger.write('more data') // again
    logger.write('and more') // again
    

    Node will keep appending new data to your file every time you'll call .write, until your application will be closed, or until you'll manually close the stream calling .end:

    logger.end() // close string
    

    Note that logger.write in the above example does not write to a new line. To write data to a new line:

    var writeLine = (line) => logger.write(`\n${line}`);
    writeLine('Data written to a new line');