只读取修改过的数据

时间:2013-06-19 07:51:00

标签: node.js file file-io filestream

在我的项目中,我正在使用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 个答案:

答案 0 :(得分:1)

您可以使用该文件的stat对象。 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 ...);

希望有所帮助!