Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js开始读取特定行上的文件_Javascript_Node.js - Fatal编程技术网

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

Javascript Node.js开始读取特定行上的文件,javascript,node.js,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}`);

在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}`);
});
但是如果我们想开始阅读一个特定的行号呢?我知道当我们使用
createReadStream
时,我们可以传入
start
参数。这些文件对此进行了解释:

选项
可以包括
开始
结束
值,以便从文件而不是整个文件中读取一定范围的字节

但是这里的
start
是以字节为单位的一个偏移量,因此使用它来设置起始行似乎很复杂


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

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

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}`);
    }
});

为了确定发生换行的位置,您需要读取该文件。无法直接打开文件并能够跳转到紧跟在
\n
之后的字节。实际上,您可以通过此实现指定确切的行号