4

Node.jsでファイルを監視していて、ファイルが変更されるたびにファイルのサイズを取得したいと思います。これはどのように行うことができfs.watchFileますか?

これは私が現在行っていることです:

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

3 に答える 3

13
var fs = require('fs');

fs.watchFile('some.file', function () {
    fs.stat('some.file', function (err, stats) {
        console.log(stats.size);
    });
});
于 2012-09-04T06:07:41.960 に答える
7

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);
  });
});
于 2013-05-20T03:29:18.577 に答える
2

fs.statコールバックで使用します。watchFile変更されたことを通知するだけで、変更の詳細は報告されません。

于 2012-09-04T06:05:26.097 に答える