我正在尝试将多个 CSV 文件解析为一个 JSON 文件。
我的问题是我不能重用读取流,因为它不会更新它正在读取的文件。因此,对于循环的每次迭代,我都会继续读取传递给它的第一个 csv 文件。
这是我用来读取目录中所有 CSV 文件的代码,然后将一个实例包装createReadStream在 Promise 中,等待结果,然后继续解析下一个 CSV 文件。(虽然它不会读取下一个 CSV 文件的值,它只是返回每次传递给它的第一个 CSV 文件的结果)
这是我正在使用的代码
const path = require("path");
const fs = require("fs");
const parse = require("csv-parse");
const parser = parse({
delimiter: ","
});
function parseCSVFile(file) {
return new Promise((resolve, reject) =>
fs
.createReadStream(file)
.pipe(parser)
.on("data", (data) => {
console.log(data);
})
.on("end", () => {
resolve();
})
.on("error", (error) => reject(error))
)
}
async () => {
const csvFiles = fs.readdirSync(path.join(__dirname, "/csvFiles"));
for (let file of csvFiles) {
await parseCSVFile(path.join(file);
}
})();
非常感谢任何帮助/建议!