只读取修改的数据

在我的项目中,我使用fs.watchFile来监听文本文件的修改。

要求只读取上次更新的数据

注意在文本文件数据总是添加,不删除。

示例代码

 fs.watchFile(config.filePath, function (curr, prev) { fs.readFile(config.filePath, function (err, data) { if (err) throw err; console.log(data); }); }); 

以上代码在修改文件时读取整个文本文件。

任何build议将是伟大的。

工作代码

 fs.watchFile(config.filePath, function (curr, prev) { var filestream = fs.createReadStream(config.filePath,{start:prev.size,end:curr.size,encoding:"utf-8"); filestream.on('data', function (data) { console.log(data); }); }); 

您可以使用文件的stat对象。 curr和prev对象都是Stat的对象,并且有一个叫做“size”的属性。

我假设你总是将数据添加到文件的开头或结尾,否则无法知道数据的添加位置。

prev.size和curr.size之间的区别告诉你添加了多less个字节。 通过给readFile-Function一个具有开始和结束属性的选项对象。

例如:您总是添加到最后,然后您可以进行这样的调用:

 fs.readFile(config.filePath, {start: prev.size}, function ...); 

如果你在开头添加:

 fs.readFile(config.filePath, {start: 0, end: (curr.size-prev.size)}, function ...); 

希望有所帮助!