是否有更快或更简洁的方法来连接使用NodeJS的目录中的所有文件?
在bash我可以做这样的事情:
for file in $1
do
cat "$file"
echo
done > $2;
Run Code Online (Sandbox Code Playgroud)
这是我现在正在做的事情:
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();
});
});
})();
});
});
};
Run Code Online (Sandbox Code Playgroud)
那?
require('child_process').execSync('cat *').toString('UTF-8')
Run Code Online (Sandbox Code Playgroud)
:D
使用异步库,您可以轻松地并行读取文件,然后合并结果。
const fs = require("fs");
const async = require("async");
const path = require("path");
module.exports = function(directory, destination) {
return new Promise((resolve, reject) => {
fs.readdir(directory, (err, files) => {
if (err)
return reject(err);
files = files.map(file => path.join(directory,file));
//Read all files in parallel
async.map(files, fs.readFile, (err, results) => {
if (err)
return reject(err);
//results[0] contents of file #1
//results[1] contents of file #2
//results[n] ...
//Write the joined results to destination
fs.writeFile(destination, results.join("\n"), (err) => {
if (err)
return reject(err);
resolve();
});
});
});
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7424 次 |
| 最近记录: |