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
返回的variablescurr
和prev
是fs.Stats
实例。 这将是最佳的解决scheme:
var fs = require('fs'); fs.watchFile('file', function (curr, prev) { console.log(curr.size); });
但是,从Node v0.8.0开始, fs.watchFile
不再使用IOWatcher
, IOWatcher
使用stat轮询,这很慢,并且不提供实时更新。 这是在GitHub上讨论的。
从Node changelog :
弃用iowatcher,fs:修复fs.watchFile()(Ben Noordhuis)
相反,备用解决scheme现在是fs.watch
和fs.stat
:
var fs = require('fs'); fs.watch('file', function (curr, prev) { fs.stat('file', function (err, stats) { console.log(stats.size); }); });
在callback中使用fs.stat
: fs.stat
只是让你知道它改变了,它不会报告更改的细节。