Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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
Node.js Electron上的节点:FS ReadLine跳过文件的前x行_Node.js_Electron_Readline - Fatal编程技术网

Node.js Electron上的节点:FS ReadLine跳过文件的前x行

Node.js Electron上的节点:FS ReadLine跳过文件的前x行,node.js,electron,readline,Node.js,Electron,Readline,当尝试使用createReadStream和readline逐行读取文件时,我没有得到所有的行。将跳过前x行。使用包含10000行的文件进行测试将跳过前4000行 const remote = window.require('electron').remote; const fs = remote.require('fs'); const readline = remote.require('readline'); const instream = fs.createReadStream('te

当尝试使用createReadStream和readline逐行读取文件时,我没有得到所有的行。将跳过前x行。使用包含10000行的文件进行测试将跳过前4000行

const remote = window.require('electron').remote;
const fs = remote.require('fs');
const readline = remote.require('readline');
const instream = fs.createReadStream('test.txt'); 
const rl = readline.createInterface(instream);
let row = 0;
rl.on('line', function (line) {
  row++;
  console.log(row + ': ' + line);
});
使用fs.readFileSync读取文件会返回所有行

const data = fs.readFileSync('test.txt');
console.log(data.toString());

只要您调用
createInterface
它就会开始读取文件并发出
line
事件,因此您必须确保
on('line',…)
createInterface
之后同步调用(即其间没有任何
wait
setTimeout
回调)

在我的例子中,我随机丢失了前几百行文件,因为在
createInterface
和读取行之间有一个
wait

const rl = readline.createInterface(stream);

const connection = await connectToDatabase(); // await causes lines to be lost!

for await (const line of rl) {
    ...
}

4000?还是会一次又一次地改变?您的console.log命令是否为1到6000或4001到10000的行输出值?不一致的是4000否。。。行输出1到6000,但行内容(也包含行计数器)从4000开始(在本例中,但每次尝试时跳过的行都会改变)