如何使用node.js将一些数据直接附加到文件?

时间:2018-06-01 15:44:21

标签: node.js

让我们说:

  • 包含此内容的文件data.jsondata.txt{"data":[]}

  • 以及一系列路径:["C:\\path1", "C:\\path2", "C:\\path3"]

问题

我们如何使用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循环一样逐个返回路径,它仅用于演示。

1 个答案:

答案 0 :(得分:1)

因为它是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(用于追加)来进行追加。

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