Node.js:修改时确定文件大小

时间:2012-09-04 06:02:43

标签: javascript node.js filesystems

我正在观看Node.js中的文件,并希望每次更改时获取文件的大小。如何使用fs.watchFile完成此操作?

这就是我目前正在做的事情:

fs.watchFile(file, function(curr, prev) {
  // determine file size
});

3 个答案:

答案 0 :(得分:13)

var fs = require('fs');

fs.watchFile('some.file', function () {
    fs.stat('some.file', function (err, stats) {
        console.log(stats.size);
    });
});

答案 1 :(得分:6)

我错过了从curr返回的变量prevfs.watchFilefs.Stats的实例。这将是最佳解决方案:

var fs = require('fs');

fs.watchFile('file', function (curr, prev) {
  console.log(curr.size);
});

但是,从Node v0.8.0开始,fs.watchFile不再使用IOWatcher,现在使用stat轮询,这很慢并且不提供实时更新。这在GitHub上进行了讨论。

来自节点changelog

  

弃用iowatcher,fs:fix fs.watchFile()(Ben Noordhuis)

相反,替代解决方案现在是fs.watchfs.stat

var fs = require('fs');

fs.watch('file', function (curr, prev) {
  fs.stat('file', function (err, stats) {
    console.log(stats.size);
  });
});

答案 2 :(得分:2)

在回调中使用fs.statwatchFile只是让您知道它已更改,但它不会报告更改详情。