node.js - 在 nodejs 中使用 fs.stat 的问题

标签 node.js

我正在尝试读取文件参数。当我编写这段代码时:

  var fs = require('fs'),
    size = new Object();
fs.stat(file, function(err,stats){
         if(!err){
            size=stats;
         }
      })
   console.log(size);

没关系,当我尝试使用函数时:

 var fs = require('fs'),
    size = new Object();
function writeinfile(file){
   fs.stat(file, function(err,stats){
         if(!err){
            size=stats;
         }
      })
   console.log(size.size);  
}
writeinfile('error.log');

这是行不通的。你能帮我解决变体 2 的问题吗?

最佳答案

您的 console.log 在您的 fs.stat 回调之外。修复它:

 var fs = require('fs'),
    size = new Object();
function writeinfile(file){
   fs.stat(file, function(err,stats){
         if(!err){
            size=stats;
            console.log(size.size);  
         }
      })

}
writeinfile('error.log');

我还重写了您的代码以在 Node.js 中使用更惯用(更常见)的语法:

var fs = require('fs');

function writeinfile (file, cb) {
  fs.stat(file, function(err,stats){
    if(err) return cb(err);
    cb(null, stats.size); 
  })
}

writeinfile('error.log', function(err, size) {
  if(err) {
    console.log(err);
    return;
  }
  console.log('The size of the file is ' + size);
});

正如 Herman 在他的回答中提到的,如果您不写入文件,最好选择一个更好的函数名称。

最后,在 Javascript 中,您可以使用 {} 作为 new Object() 的快捷方式。例如:var size = {};

关于node.js - 在 nodejs 中使用 fs.stat 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13128037/

相关文章:

javascript - Mongoose 填充值并修改对象

node.js - node.js 中的阻塞请求故障排除

node.js - 在 expressjs 渲染中 DRYing layout locals

node.js - ExpressJS 不使用 app.use 提供静态模板

在nodejs中传递javascript消息

node.js - 从 marklogic 数据库向前端显示二进制文档

javascript - React - Axios 正在将未定义的文件数据发送到 Node 服务器

node.js - 当对 npm 模块使用私有(private) git url 时,如何将使用应用程序配置为仅使用模块 dist 文件夹中的文件?

node.js - sqlite/sequelize 中 hasOne 和 hasMany 的表示

javascript - 无法点击 div 按钮 selenium webdriver