2013-06-19 31 views
1

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

要求 只读最后一个更新的数据

注意在文本文件中的数据总是被添加,删除无。

示例代码

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

上面的代码读取当文件被修改,整个文本文件。

任何建议将是伟大的。

工作守则

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); 
    }); 
}); 

回答

1

您可以用文件的统计对象的工作。 curr和prev对象都是Stat的对象,并且具有称为“size”的属性。

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

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

例如:你总是添加到末尾,那么你就可以做出这样的呼吁:

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

如果你在开始添加:

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

希望帮助!

+0

仅供参考,我在文件末尾追加数据。但它不工作fs.readFile(config.filePath,{start:prev.size},function ...);它读取整个文件。 – karthick

+0

谢谢你的回答给了我一个想法+1。 – karthick