Monday 1 May 2017

NodeJS concatenate all files in a directory

Is there a fast or more efficient way to concatenate all of the files located in a directory using NodeJS?

In bash I could do something like this:

for file in $1
do
  cat "$file"
  echo
done > $2;

Here is what I'm doing now:

var fs = require('fs');
var Promise = require('bluebird');

module.exports = function(directory, destination) {
    return new Promise((resolve, reject) => {
        fs.readdir(directory, (err, files) => {
            if (err) {
                return reject(err);
            }

            (function next() {
                var file = files.shift();
                if (!file) {
                    return resolve();
                }

                fs.readFile(directory + '/' + file, (err, content) => {
                    if (err) {
                        return reject(err);
                    }

                    fs.appendFile(destination, '\n' + content, (err) => {
                        if (err) {
                            return reject(err);
                        }

                        return next();
                    });
                });
            })();
        });
    });
};



via d-_-b

No comments:

Post a Comment