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

我正在看Node.js中的一个文件,并希望在每次更改时获取文件的大小。 这怎么可以用fs.watchFile完成?

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

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

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

我错过了从fs.watchFile返回的variablescurrprevfs.Stats实例。 这将是最佳的解决scheme:

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

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

从Node changelog :

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

相反,备用解决scheme现在是fs.watchfs.stat

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

在callback中使用fs.statfs.stat只是让你知道它改变了,它不会报告更改的细节。