首页 > 解决方案 > 如何使用 node.js 将一些数据直接附加到文件中?

问题描述

假设我们有:

问题

我们如何使用 node.js 数据流(或诸如此类)将路径数组附加到这个文件中,以便我们最终得到这个:

{"data":["C:\\path1", "C:\\path2", "C:\\path3"]}

代码

let filePath = 'C:\test\data.json'
let paths = ["C:\\path1", "C:\\path2", "C:\\path3"]

for (let index = 0; index < paths.length; index++) {
  // ... streaming paths to the file one by one
}

我不能paths在没有循环的情况下放入文件 - 在我的项目中我有walkdir(drive, options, (path) => {})而不是for循环。它也像上面的循环一样一一返回路径for,这只是为了演示。

标签: node.js

解决方案


因为它是 JSON,所以您实际上不能附加到文件中。您必须读出整个文档,将 JSON 解析为 POJO,进行更改,对 JSON 进行字符串化,然后将其写回。

import { readFile, writeFile } from 'fs';

readFile(filePath, (err, data) => {
  if (err) throw new Error(err);

  const json = JSON.parse(data);

  paths.forEach(path => json.data.push(path));

  writeFile(filePath, JSON.stringify(json), err => { /* handle err */ });
});

如果它是一个纯文本文件,您可以通过写入它并将flag选项设置为a(for append) 来进行追加。

writeFile(filePath, { flag: 'a' }, 'text to append');

推荐阅读