从文件中删除行而不改变节点js中的缓冲区变量

Remove line from file without mutating the buffer variable in node js

我是 Nodejs 新手

我编写了一个从文件中读取内容并将其作为数组存储到变量中的函数。最后我改变变量并将其写入文件。见下文:

function(file, item) {
   return fs.readLine(file).then(function(contents) {
       var data = contents.split(/\n/);
       data.splice(data.indexOf(item), 1);
       return fs.writeFile(file, data.join(/\n/));
});
}

有没有办法在不改变变量甚至不必将文件内容存储到变量中并在节点 js 中删除它的情况下执行相同的操作?

谢谢

如果你不想用 data.splice() 改变变量,那么你可以使用 data.slice() 不改变原始数组。请参阅文档:

此外,您可以创建一个可读流并过滤掉不需要的行,而不是将文件内容读入变量。

看看我是如何创建过滤标准输入行的 filt 模块的:

源码和大量例子在GitHub:

基本上你可以在这里做的是 - 使用方便的 split 模块 - 像这样:

fs.createReadStream(file).pipe(split()).on('data', (line) => {
    // if line is something ... etc.
});