node.js - 如何使用 node.js 将一些数据直接附加到文件中?
问题描述
假设我们有:
一个文件
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
,这只是为了演示。
解决方案
因为它是 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');
推荐阅读
- ionic-framework - Ionic Stencil:扩展默认组件
- excel - 希望在输入中读取用户并在 excel 表的 B 列上查找字符串 - powershell
- java - 在具有许多传递依赖项的应用程序中实现 SLF4J
- php - 如果长度 > 1000000 个字符,则未设置 $_POST 键/值
- python - 如何使用 python paramiko 包在远程服务器上执行 *sudo* 命令?
- google-apps-script - 可以在段落中找到并标记相同单词的脚本
- microsoft-edge - gif 在 Microsoft Edge 中无法正确动画
- azure-functions - 发布失败 - 无法理解该怎么做
- python - 对 NoneType 数据类型使用 isinstance(variable,data_type_name) 函数出错
- google-apps-script - 当为条形的行填充单元格时,如何更改谷歌表格中图表条的颜色