【发布时间】:2012-09-04 06:02:43
【问题描述】:
我正在查看 Node.js 中的文件,并希望在每次文件更改时获取文件的大小。 fs.watchFile 怎么能做到这一点?
这是我目前正在做的事情:
fs.watchFile(file, function(curr, prev) {
// determine file size
});
【问题讨论】:
标签: javascript node.js filesystems
我正在查看 Node.js 中的文件,并希望在每次文件更改时获取文件的大小。 fs.watchFile 怎么能做到这一点?
这是我目前正在做的事情:
fs.watchFile(file, function(curr, prev) {
// determine file size
});
【问题讨论】:
标签: javascript node.js filesystems
var fs = require('fs');
fs.watchFile('some.file', function () {
fs.stat('some.file', function (err, stats) {
console.log(stats.size);
});
});
【讨论】:
我错过了从fs.watchFile 返回的变量curr 和prev 是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:修复 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);
});
});
【讨论】:
在回调中使用fs.stat:watchFile 只是让您知道它已更改,它不会报告更改详细信息。
【讨论】: