如何在fs回调方法中访问文件名?

Pra*_*ate 5 asynccallback fs node.js

我如何获得的参数fs.read,fs.stat...方法从回调中?

例如,如果我想基于其大小的下载(coffeeScript)代码片段来处理文件

#assuming test1.txt exists
filename = "./test1.txt"
fs.stat filename, (err, stats) ->
  data = filename:filename,size:stats.size
  console.log data
  #further process filename based on size
filename = "./test2.txt"
Run Code Online (Sandbox Code Playgroud)

版画

{ filename: './test2.txt', size: 5 }
Run Code Online (Sandbox Code Playgroud)

因为filename设置为"./test2.txt".如果我在fs.stat回调中使用filename变量处理/读取文件, 那么它将使用test2.txt哪个不是预期的.

我希望在回调中看到的是

{ filename: './test1.txt', size: 5 }
Run Code Online (Sandbox Code Playgroud)

Way*_*inn 7

不要以为现在就有办法做到这一点.在某些时候添加到节点可能是一件好事.如果你要做很多事情,你可以放fs.stat一个友好的包装.

var friendlyStat = function(filename, callback){
    fs.stat(filename, function(err, stats){
        stats.filename = filename

        if(err) {
            callback(err);
        } else {
            callback(err, stats);
        }
    })
}

friendlyStat('test1.txt', function(err, stat){ console.log(stat.filename);});
friendlyStat('test2.txt', function(err, stat){ console.log(stat.filename);});
Run Code Online (Sandbox Code Playgroud)