merge-files
Version:
Combine multiple files into one file in order based on multistream. It's a promise version that applies to merging large files that taking long time.
35 lines (32 loc) • 932 B
JavaScript
/**
* @file merge-files
* @author Sheeta(wuhayao@gmail.com)
*/
var fs = require('fs');
var multistream = require('multistream');
/**
* merge files
*
* @param {Array<string>} inputPathList input path list
* @param {string} outputPath output path
* @return {promise} promise
*/
module.exports = function mergeFiles(inputPathList, outputPath) {
var fd = fs.openSync(outputPath, 'w+');
var output = fs.createWriteStream(outputPath);
var inputList = inputPathList.map((path) => {
return fs.createReadStream(path);
});
return new Promise((resolve, reject) => {
var multiStream = multistream(inputList);
multiStream.pipe(output);
multiStream.on('end', () => {
fs.closeSync(fd);
resolve(true);
});
multiStream.on('error', () => {
fs.closeSync(fd);
reject(false);
});
});
}