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

如何使用node.js将一些数据直接附加到文件中?,node.js,Node.js,假设我们有: 包含以下内容的文件data.json或data.txt: 和路径数组:[“C:\\path1”、“C:\\path2”、“C:\\path3”] 问题: 我们将如何使用node.js数据流(或诸如此类)将路径数组附加到此文件中,以便最终得到以下结果: {"data":["C:\\path1", "C:\\path2", "C:\\path3"]} 代码 let filePath='C:\test\data.json' 让路径=[“C:\\path1”,“C:\\path2”,

假设我们有:

  • 包含以下内容的文件
    data.json
    data.txt

  • 和路径数组:
    [“C:\\path1”、“C:\\path2”、“C:\\path3”]

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

{"data":["C:\\path1", "C:\\path2", "C:\\path3"]}
代码
let filePath='C:\test\data.json'
让路径=[“C:\\path1”,“C:\\path2”,“C:\\path3”]
for(让index=0;index

我不能在没有循环的情况下将
路径
放入文件中-在我的项目中,我有
walkdir(驱动器,选项,(路径)=>{})
而不是
for
循环。它还像上面的
循环那样逐个返回路径,这只是为了演示。

因为它是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 */ });
});
如果它是一个纯文本文件,您可以通过写入它并将
标志
选项设置为
a
(用于追加)来进行追加


谢谢你的回答!您知道
writeFile
是否与
createWriteStream
一样高效吗?paths数组的大小为300 MB,我不确定在这种情况下使用哪种方法更好如果您使用的是JSON版本,那么
writeFile
最好只写入一次文件。如果在这两者之间重复编写,则
createWriteStream
可能会将其边缘化。不过,它们的性能应该非常相似。是的,我需要在循环的每次迭代中逐个编写每个
路径
,以便它直接进入文件,而不停留在ram中。感谢您提供的信息如果因为担心数据丢失或其他原因而必须持续流式传输,我可能会建议您将每条记录写入一个纯文本文件中,在该文件中它们仅以换行符分隔,然后使用不同的进程读取该文件并定期将其转换为JSON。根据处理速度的不同,不断地写出一个完整的300MB文件可能会占用大量的处理时间。我想我应该把它写成一个txt文件,在需要访问时解析它。将字符串从txt解析为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 */ });
});
writeFile(filePath, { flag: 'a' }, 'text to append');