我正在尝试让节点打开目录中的每个文本文件,以便将它们放入数组中。我已经尝试过readdir和readdirSync,它(它)获取了一个文件名列表,但我希望它也能打印文件内容,我所做的一切都让它变得更糟。 (我想我想要readdirSync,所以它在获取其他任何内容之前获取所有数据?)
var filenames = [];
var fs = require("fs");
var path = require("path");
var p = "6er/"
fs.readdirSync(p, function (err, files) {
if (err) {
throw err;
}
files.map(function (file) {
return path.join(p, file);
}).filter(function (file) {
return fs.statSync(file).isFile();
}).forEach(function (file) {
filenames.push(file);
console.log(file);
});
});
for(var f in filenames){
fs.readFile(p+f, function (err, data){
var results = data;
console.log(results);
});
}
答案 0 :(得分:0)
Readdirsync不会那样工作,它不使用回调,因为它是同步...请使用readdir:https://nodejs.org/api/fs.html#fs_fs_readdir_path_callback
对于这个问题,我建议一种处理所有异步的方法,这样你在读取所有这些文件时就不会遇到阻塞线程的问题,请研究这个包:https://github.com/caolan/async
如果您需要更多帮助添加评论,我会回复