gpt4 book ai didi

node.js - Nodejs如何轻松地将字符串插入到文件的第n行?

转载 作者:太空宇宙 更新时间:2023-11-04 01:08:59 25 4
gpt4 key购买 nike

我用 google 搜索并检查了一些 npm(例如 Lazy),但仍然找不到一个好的模式来将字符串插入到文件的第 n 行。

作为 Nodejs 的新手,我认为这可以像其他语言一样轻松完成,例如PHP/ ruby 。

感谢您提前提供解决方案。

最佳答案

你能做的是:

  1. 以读取模式打开文件

`var fileData = fs.createReadStream('filename.extension');'

  1. 逐行读取并跟踪计数器
  2. 用您想要的第 n 行号检查此计数器
  3. 如果匹配:通过以追加模式打开文件并遍历计数器来追加行 fileData.write("this is a message");。如果不匹配:打印“没有找到这样的位置。错误!”我可能会使用“给定输入流,在每一行通知我”模块之一,例如 Node 惰性或署名:

    var fs = require('fs'), byline = require('byline');

    var Stream = byline(fs.createReadStream('sample.txt'));流.on('行', 函数(行) { //用线做事});Stream.pipe(fs.createWriteStream('./output');

如果您的文件很小,您可以简单地同步读取所有文件并分割结果字符串,如下所示:

require('fs').readFileSync('abc.txt').toString().split('\n').forEach(function (line) { line; })[1]

另一种方式:

<强> Line-by-line npm

var LineByLineReader = require('line-by-line'),
var lr = new LineByLineReader('big_file.txt');

lr.on('error', function (err) {
// 'err' contains error object
});

lr.on('line', function (line) {
// pause emitting of lines...
lr.pause();

// ...do your asynchronous line processing..
setTimeout(function () {

// ...and continue emitting lines.
lr.resume();
}, 100);
});

lr.on('end', function () {
// All lines are read, file is closed now.
});

你的 Node 惰性方式:

var     lazy    = require("lazy"),
fs = require("fs");
var matched_line_number = 10;// let say 10, can be any

new lazy(fs.createReadStream('./MyVeryBigFile.extension'))
.lines
.forEach(function(line){
console.log(line.toString());
ctr++;
}
);

另一种方式可能是:

var fs = require('fs'),
async = require('async'),
carrier = require('carrier');

async.parallel({
input: fs.openFile.bind(null, './input.txt', 'r'),
output: fs.openFile.bind(null, './output.txt', 'a')
}, function (err, result) {
if (err) {
console.log("An error occured: " + err);
return;
}

carrier.carry(result.input)
.on('line', result.output.write)
.on('end', function () {
result.output.end();
console.log("Done");
});
});

以读取模式打开文件,逐行检查所需的行,并同时将其写入另一个文件并操作您的行。

关于node.js - Nodejs如何轻松地将字符串插入到文件的第n行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19887915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com