所以我有一个目录,我有几个Json文件,由"创建的日期和时间以及#34; .JSON命名。我想创建一个包含所有json内容的数组,意思是
FIle1.json
文件2。 JSON 。 。 。 FIlen.json
应该看[{FIle1.json(content)},{File2.json},...... {Filen.json}]
我是Node.json的新手,任何帮助都是welecomed
更新
所以我列出了我的文件,现在我们没有成功打开它们,这是我的代码:
const testFolder = './report/';
const fs = require('fs');
fs.readdir(testFolder, (err, files) => {
files.forEach(file => {
console.log(file);
fs.readFile(file, {encoding: 'utf-8'}, function(err, data){
if (err) {
console.log(err);
throw err;
}
console.log('result read: ' + data);
});
});
})
我得到的结果是: 我列出了文件:
revision_2017-04-19T16:26:33 + 02:00.json revision_2017-04-19T16:27:25 + 02:00.json
然后当我想打开它们时:
{[错误:ENOENT:没有这样的文件或目录,打开 ' revision_2017-04-19T16:26:33 + 02:00.json']错误:-2,代码: ' ENOENT',
有没有人有任何想法解决这个问题?
谢谢你们
答案 0 :(得分:1)
您需要做的是列出目录中的所有文件,然后将它们全部打开并将其内容放在对象中。
为此,您可以使用fs
模块(文件系统)列出并打开所有文件,然后将内容放入数组中:
const fs = require('fs');
let myArray = [];
fs.readdir('./your_directory', (err, files) => { // return an array that contains the names of the files in 'your_directory'
files.forEach(file => { // loop over your files
fs.readFile(file, {encoding: 'utf-8'}, function(err, data){ // open each file
// the data variable represents your JSON file
myArray.push(JSON.parse(data));
});
});
});
你在这里,但是你可能想要回到主要的js范围,所以你可以使用Promises,或使用以下方法:
它们执行与先前函数(readFile / readdir)相同的操作,但是同步。
希望它有所帮助,
最好的问候,