Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 仅读取修改的数据_Node.js_File_File Io_Filestream - Fatal编程技术网

Node.js 仅读取修改的数据

Node.js 仅读取修改的数据,node.js,file,file-io,filestream,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(dat

在我的项目中,我使用
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);
  });
});

您可以使用文件的stat对象。curr和prev对象都是s对象,具有一个名为“size”的属性

我假设您总是将数据添加到文件的开头或结尾,否则无法知道数据添加到了何处

prev.size和curr.size之间的差异告诉您添加了多少字节。通过为选项对象指定开始和结束属性

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

fs.readFile(config.filePath, {start: prev.size}, function ...);
如果在开头添加:

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

希望有帮助

您可以使用文件的stat对象。curr和prev对象都是s对象,具有一个名为“size”的属性

我假设您总是将数据添加到文件的开头或结尾,否则无法知道数据添加到了何处

prev.size和curr.size之间的差异告诉您添加了多少字节。通过为选项对象指定开始和结束属性

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

fs.readFile(config.filePath, {start: prev.size}, function ...);
如果在开头添加:

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

希望有帮助

仅供参考,我正在文件末尾添加数据。但是它不能工作fs.readFile(config.filePath,{start:prev.size},function;它读取了整个文件。谢谢你的回答给了我一个想法+1。仅供参考,我将在文件末尾添加数据。但是它不能工作fs.readFile(config.filePath,{start:prev.size},function;它读了整个文件。谢谢你的回答给了我一个想法+1。