我正在观看Node.js中的文件,并希望每次更改时获取文件的大小。如何使用fs.watchFile
完成此操作?
这就是我目前正在做的事情:
fs.watchFile(file, function(curr, prev) {
// determine file size
});
答案 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
返回的变量prev
和fs.watchFile
是fs.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.watch
和fs.stat
:
var fs = require('fs');
fs.watch('file', function (curr, prev) {
fs.stat('file', function (err, stats) {
console.log(stats.size);
});
});
答案 2 :(得分:2)
在回调中使用fs.stat
:watchFile
只是让您知道它已更改,但它不会报告更改详情。