我正在尝试在应用程序中使用循环读取所有json文件。 这是读取单个文件的代码,效果很好。
const translations = require("../data/hello" + fileEndWith);
但是目录转换中有10多个文件,所以我不想为每个文件编写相同的代码,而不是我想循环读取。
let fs = require('fs');
let fileEndWith = "en.json";
fs.readdir("../data/", (err, fileNames) => {
fileNames.forEach((fileName) => {
if(fileName.indexOf(fileEndWith) != -1){
// some code.....
}
});
});
但是它给出了错误,无法解决fs。
答案 0 :(得分:0)
您可以使用cutie-fs库中的过程:
fs.readdir("../data/", (err, fileNames) => {
let jsonFileNames = fileNames.filter(fileName => fileName.indexOf(fileEndWith) != -1);
readDataFromFiles(jsonFileNames, {encoding: 'utf8'}, (error, dataObj) => {
console.log(dataObj); // {fileName1: data1, fileName2: data2, ... }
});
});
readDataFromFiles
是以下功能
const readDataFromFiles = (files, options, callback) => {
let contents = {};
let count = 0;
if (files.length === 0) {
callback(null, contents);
}
files.forEach(file => {
fs.readFile(file, options, (error, data) => {
if (error) {
callback(error);
} else {
contents[file] = data;
count += 1;
if (count === files.length) {
callback(null, contents);
}
}
});
});
}
此功能可以找到here
另外,最好将const
用于模块:
const fs = require('fs');