Node.js Electron上的节点:FS ReadLine跳过文件的前x行
当尝试使用createReadStream和readline逐行读取文件时,我没有得到所有的行。将跳过前x行。使用包含10000行的文件进行测试将跳过前4000行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
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开始(在本例中,但每次尝试时跳过的行都会改变)