0

我有一个外部程序不时将数据流式传输到 csv 文件(但退出很多)。我想每 10 秒收集一次所有更改的数据并对其进行一些处理。意味着我只想处理我以前没有处理过的行。

这是基本代码:

function myFunction() {

  var loop = setInterval(
    () =>
      {
          var instream = fs.createReadStream("rawData.csv"); //should somehow include only new data since last cycle
          var outstream = fs.createWriteStream("afterProcessing.csv");
          someProcessing(instream, outstream);
          outstream.on('finish', () => {
               sendBackResults("afterProcessing.csv");
                });
        //will exit the loop when 'run' flag will change to false
          if(!run) ? clearInterval(loop) : console.log(`\nStill Running...\n`) ;
      } , 10000 );    

 }

现在,我尝试使用 chokidar 和 fs.watch,但我不知道在这种情况下如何使用它们。

4

1 回答 1

0

fs.createReadStream可以带start参数

选项可以包括开始和结束值以从文件而不是整个文件中读取一系列字节。start 和 end 都包含在内,从 0 开始计数

所以你需要保存最后读取的位置,并在start.

你可以使用:instream.bytesRead.

let bytesRead = 0;

instream.on('end', () => {
  bytesRead = instream.bytesRead;
});
于 2019-03-12T16:16:13.597 回答