访问由fs.writeFile写入的文件的名称

时间:2013-12-01 06:25:38

标签: node.js

我正在使用fs.writeFile将大量文件写入目录。我想使用在回调中写入的文件的名称(例如打印“文件x已写入”)。

如何获取正在写入的文件的名称(x)?

使用我传递给writeFile的filename变量将无效,因为writeFile是异步的。

谢谢!

1 个答案:

答案 0 :(得分:4)

所以我认为你正在做这样的事情(只是猜测,因为你没有发布代码):

var files = [ 'file1.txt', 'file2.txt', 'file3.txt' ];
for (var i = 0; i < files.length; i++) {
  var filename = files[i];
  fs.writeFile(filename, CONTENTS, function(err) {
    console.log('File written:', filename);
  });
}

这不会起作用,因为filename将被重复使用并覆盖每次迭代。

最简单的解决方案是使用forEach

files.forEach(function(filename) {
  fs.writeFile(filename, CONTENTS, function(err) {
    console.log('File written:', filename);
  });
});

这将为每次迭代创建一个新的范围filename变量,不会被覆盖。