【问题标题】:Node.js: Determine file size on modificationNode.js:在修改时确定文件大小
【发布时间】:2012-09-04 06:02:43
【问题描述】:

我正在查看 Node.js 中的文件,并希望在每次文件更改时获取文件的大小。 fs.watchFile 怎么能做到这一点?

这是我目前正在做的事情:

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

【问题讨论】:

    标签: javascript node.js filesystems


    【解决方案1】:
    var fs = require('fs');
    
    fs.watchFile('some.file', function () {
        fs.stat('some.file', function (err, stats) {
            console.log(stats.size);
        });
    });
    

    【讨论】:

      【解决方案2】:

      我错过了从fs.watchFile 返回的变量currprevfs.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.watchfs.stat

      var fs = require('fs');
      
      fs.watch('file', function (curr, prev) {
        fs.stat('file', function (err, stats) {
          console.log(stats.size);
        });
      });
      

      【讨论】:

        【解决方案3】:

        在回调中使用fs.statwatchFile 只是让您知道它已更改,它不会报告更改详细信息。

        【讨论】:

          猜你喜欢
          • 2012-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-08
          • 1970-01-01
          相关资源
          最近更新 更多