NodeJS readFile()获取文件名
NodeJS readFile() retrieve filename
我正在迭代一个包含文件名的数组。对于它们中的每一个,我调用readFile()
。当调用相应的回调时,我希望检索作为参数传递给readFile()
的文件名。这能做到吗?
为了更好地解释我的意图,附上了一段代码片段。
var fs = require("fs");
var files = ["first.txt", "second.txt"];
for (var index in files) {
fs.readFile(files[index], function(err, data) {
//var filename = files[index];
// If I am not mistaken, readFile() is asynchronous. Hence, when its
// callback is invoked, files[index] may correspond to a different file.
// (the index had a progression).
});
}
可以使用闭包:
for (var index in files) {
(function (filename) {
fs.readFile(filename, function(err, data) {
// You can use 'filename' here as well.
console.log(filename);
});
}(files[index]));
}
现在每个文件名都被保存为函数的参数,并且不会受到循环继续迭代的影响。
您也可以使用forEach
代替for
循环:
files.forEach(function (file){
fs.readFile(file, function (err, data){
console.log("Reading %s...", file)
})
})
还可以使用Function.prototype.bind
作为参数的前缀。bind
将返回一个新函数,该函数在被调用时,以files[index]作为第一个参数调用原函数。
但不知道这是不是一个好方法。
var fs = require("fs");
var files = {"first.txt", "second.txt"};
for (var index in files) {
fs.readFile(files[index],
(function(filename, err, data) {
//filename
}).bind(null, files[index])
);
}
相关文章:
- JS-使用Ajax获取文件名
- 如何在JavaScript中基于事件对象获取文件名
- 从Javascript中的输入文件中获取文件名
- 如何从 URL 中获取文件名和扩展名
- 从 PhotoPrevs.append 获取文件名
- 从javascript中的字符串路径获取文件名
- 谷歌表格-从硬盘获取文件名并插入表格-(模拟Excel's Appification.GetOpenFilena
- 从url获取文件名
- 无法在节点应用程序上获取/文件名错误
- 从远程服务器目录获取文件名列表
- PHP 当文件太大时,我如何获取文件名
- 角度输入上传 - 获取文件名并上传
- 如何使用 JavaScript 或 JQuery 从输入类型=文件 html 元素获取文件名
- 在javascript中使用文件选择器从Gdrive中获取文件时无法获取文件名
- 在 JS 中获取文件名和/或文件夹内容
- 使用jquery从文件上传中获取文件名,并将filename设置为文本字段
- 如何在选择时在文本框中获取文件名(不像c:/fake-path/)
- 从 Css 属性背景 url 获取文件名
- 从JS中的URL获取文件名
- 在使用jQuery提交之前,从Django imagefield中获取文件名