4

我正在查看 Node.js 中的文件,并希望在每次文件更改时获取文件的大小。如何做到这一点fs.watchFile

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

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

3 回答 3

13
var fs = require('fs');

fs.watchFile('some.file', function () {
    fs.stat('some.file', function (err, stats) {
        console.log(stats.size);
    });
});
于 2012-09-04T06:07:41.960 回答
7

我错过了返回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 上进行了讨论。

从节点更改日志

弃用 iowatcher、fs:修复 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);
  });
});
于 2013-05-20T03:29:18.577 回答
2

Use fs.stat in the callback: watchFile just lets you know it changed, it doesn't report the change details.

于 2012-09-04T06:05:26.097 回答