Node.js开始读取特定行上的文件

use*_*696 3 javascript node.js

在Node.js上,我们可以使用readline模块逐行读取文件:

var fs = require('fs');
var readline = require('readline');

var rl = readline.createInterface({
    input: fs.createReadStream('filepath');
});

rl.on('line', function(line) {
    console.log(`Line read: ${line}`);
});
Run Code Online (Sandbox Code Playgroud)

但是,如果我们想要开始阅读特定的行号怎么办?我知道当我们使用时,createReadStream我们可以传入一个start参数.这在文档中解释:

options可以包含startend值来从文件而不是整个文件中读取一系列字节.

但这里start有一个以字节为单位的偏移量,所以使用它来设置起始线似乎很复杂.

我们如何调整这种方法来开始读取特定行上的文件?

jfr*_*d00 6

您必须从头开始读取文件并计算行数,并在到达某一行后才开始处理行.没有办法让文件系统告诉您特定行的开始位置.

var fs = require('fs');
var readline = require('readline');
var cntr = 0;

var rl = readline.createInterface({
    input: fs.createReadStream('filepath');
});

rl.on('line', function(line) {
    if (cntr++ >= 100) {
        // only output lines starting with the 100th line
        console.log(`Line read: ${line}`);
    }
});
Run Code Online (Sandbox Code Playgroud)