当新文件放在目录中时,为什么fs.watch会在每个文件中记录三个条目

时间:2015-12-04 19:24:41

标签: node.js fs

我不知道我的代码中是否存在一些故障。我正在观看新json文件的目录。 fs.watch查看文件但在日志中记录三个条目。我似乎无法弄明白为什么。

我的代码

'use strict';
var fs = require('fs'); 
fs.watch('C:/Users/PCAdmin/Downloads/jsonin', function (event, filename) {
  console.log('event is: ' + event);
  if (filename) {
    console.log('filename provided: ' + filename);
  } else {
    console.log('filename not provided');
  }
});

输出:

LOG ENTRIES 
event is: rename
filename provided: 23456.json
event is: change
filename provided: 23456.json
event is: change
filename provided: 23456.json

1 个答案:

答案 0 :(得分:0)

经过大量研究后,看来fs.watch正在拿起ReadDirectoryChangesW FILE_NOTIFY_CHANGE_FILE_NAME,FILE_NOTIFY_CHANGE_LAST_WRITE,FILE_NOTIFY_CHANGE_ATTRIBUTES

为了缓解这个问题,我添加了一个额外的if语句来限制重命名的响应,这将捕获正在添加的文件名

'use strict';
var fs = require('fs'); 
fs.watch('C:/Users/PCAdmin/Downloads/jsonin', function (event, filename) {
  if (event ==='rename') {
  console.log('event is: ' + event);

  if (filename) {
    console.log('filename provided: ' + filename);
    return;
  } else {
    console.log('filename not provided');
    return;
  }
  }
});