Node.jsでファイルを監視していて、ファイルが変更されるたびにファイルのサイズを取得したいと思います。これはどのように行うことができfs.watchFile
ますか?
これは私が現在行っていることです:
fs.watchFile(file, function(curr, prev) {
// determine file size
});
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);
});
});
curr
変数とprev
から返される変数fs.watchFile
がのインスタンスであることを見逃しましたfs.Stats
。これが最適なソリューションです。
var fs = require('fs');
fs.watchFile('file', function (curr, prev) {
console.log(curr.size);
});
ただし、ノードv0.8.0以降、fs.watchFile
は使用されなくなりIOWatcher
、統計ポーリングが使用されるようになりました。これは低速であり、リアルタイムの更新を提供しません。これはGitHubで議論されました。
ノード変更ログから:
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
変更されたことを通知するだけで、変更の詳細は報告されません。