让我们说:
包含此内容的文件data.json
或data.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
循环一样逐个返回路径,它仅用于演示。
答案 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');