1

我正在尝试将多个 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);
  }
})();

非常感谢任何帮助/建议!

4

0 回答 0