没有简单的方法在nodejs中逐行读取文件吗?

时间:2018-10-13 13:37:56

标签: javascript node.js parsing stream filestream

我在nodejs中写了一个小解析器,它将一个给定的汇编语言翻译成二进制代码。具有讽刺意味的是,我为在线阅读而苦恼。 我想要的是可以逐行读取文件的可能性(例如readline.createInterface),但是它只能在调用函数时逐行读取。

IE

1.) While LastChunkNotReached
 1.1) Read chunk
 1.2) Split chunk into lines and save into buffer
    2.) While last line in buffer not reached
     2.1) return actual line somehow and wait for the user to invoke a function to 
          advance to the next line. 
    2.) End
1.) End

如果发生可读事件(这可能是我唯一有效的起点),则可以在调用stream.read()函数的同时收集块。

stream.on("readable", () => {
    console.log("Data available");
    const data = stream.read();
    console.log("Data read: " + data)
})

但是这种方法的问题如下(据我观察): 当我使用read函数时,它会从内部缓冲区返回一个块,但是现在,每次内部缓冲区中有新数据时,就会触发可读事件(依次调用.read()函数)

是否有一种干净的方法来拦截这种行为,直到达到我上面所描述的程度? 如果您能给我一些有关此问题的想法或提示,那就太好了!

1 个答案:

答案 0 :(得分:0)

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

  var myInterface = readline.createInterface({
      input: fs.createReadStream('demo.txt')
  });

  var lineno = 0;
  myInterface.on('line', function (line) {
     lineno++;
     console.log('Line number ' + lineno +" > "+ line);
  });