如何使用行号读取文件 – node.js?

我在node.js工作。

需求:

 Note: Log - directoryName(Contains log files) 
  1. 必须听log directory变化。 如果有任何日志文件添加到日志目录,我必须读取特定的添加日志文件。

  2. 如果有任何内容被追加到现有的文件。 必须读取特定的更改不是整个文件。

注意:

我正在使用chokidar来观看目录。

 var chokidar = require('chokidar'); var watcher = chokidar.watch('../log', {ignored: /[\/\\]\./, persistent: true}); watcher.on("add", function(path){ new lazy(fs.createReadStream(path)).lines.forEach(function(line) { console.log(line.toString()); }); }).on("change", function(path){ //Reading from first line new lazy(fs.createReadStream(path)).lines.forEach(function(line) { console.log(line.toString()); }); }); 

问题

上面的代码是基于目录更改和文件添加工作的。 问题是在阅读文件时。 如果一些文件的变化,我想只读取特定的变化,而不是从一开始。

有没有节点模块只读取文件中的附加内容?

任何build议将不胜感激。

你应该使用节点尾巴或检查它是如何做到的: https : //github.com/lucagrulla/node-tail

首先它会logging文件的大小,使用fs.statSync,然后在每次更改时都会得到新的大小。 然后开始从前面logging的结尾(文件的大小)读取文件,直到新的大小。

fs.createReadStream支持读取文件的startend选项。