读取多个目录中的文件,使用Node和Promises将文件名与数据匹配

海军陆战队员Ozger

我有一个目录数组。

var directories = ['/dir1', '/dir2'];

我想读取这些目录下的所有文件,最后有一个对象将文件名与其base64 / utf8数据匹配。就我而言,这些文件是图像。生成的对象可能看起来像:

var result = {
 '/dir1': {
  'file1': 'iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAIAAACx0UUtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWF...',
  'file2': 'iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAIAAACx0UUtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWF...'   
 }
}

我很容易用回调地狱实现此功能,但是当我尝试Promises时,我不确定如何将目录信息以及文件名传递给后续的then()和map()函数。

在下面的示例中,我正在使用Bluebird库:

const Promise = require('bluebird'),
  fs = Promise.promisifyAll(require('fs'));

var getFiles = function (dir) {
      return fs.readdirAsync(dir);
  };

Promise.map(directories, function(directory) {
    return getFiles(directory)
  }).map(function (files) {
    // which directory's files are these?
    return files;
  })

下一步将是遍历文件并读取其数据。

我不在乎答案是ES6,Bluebird还是Q。

贝吉

蓝鸟最简单的方法是使用props

function getFiles(paths) { // an array of file/directory paths
    return Promise.props(paths.reduce(function (obj, path) {
        obj[path.split("/").pop()] = fs.statAsync(path).then(function (stat) {
            if (stat.isDirectory())
                return fs.readdirAsync(path).map(function (p) {
                    return path + "/" + p;
                }).then(getFiles);
            else if (stat.isFile())
                return fs.readFileAsync(path);
        }).error(function (e) {
            console.error("unable to read " + path + ", because: ", e.message);
            // return undefined; implied
        });
        return obj;
    }, {}));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

读取多个目录中的文件,使用Node和Promises将文件名与数据匹配

来自分类Dev

从目录中读取未知文件名

来自分类Dev

如何使用Python更改目录中的多个文件名

来自分类Dev

按文件名前缀顺序读取目录中的文件?

来自分类Dev

Spark读取的文件夹目录,其文件名包含在结果数据框中

来自分类Dev

将递增值写入子目录中与文件名匹配的所有文件

来自分类Dev

“查找”或“ grep”文件名以匹配目录和子目录中的模式

来自分类Dev

如何根据文件名和计数文件将文件移动到目录中

来自分类Dev

读取文件并与文件名匹配

来自分类Dev

如何使用Node.js将数据作为文件夹中的文件名写入CSV文件

来自分类Dev

如果文件名和目录匹配 python

来自分类Dev

Perl,使用带有部分这些文件名的数组来匹配目录中的文件

来自分类Dev

使用 wget 下载与文件名中的扩展名和特定文本匹配的文件

来自分类Dev

如何匹配不同目录中的文件名?(bash或python)

来自分类Dev

将'diff'与不匹配的目录和文件名一起使用

来自分类Dev

根据文件名与另一个文件匹配将文件移动到不同的目录中

来自分类Dev

我可以使用什么正则表达式来匹配和替换多个文件名中的句号?

来自分类Dev

18.04中使用bash和ffmpeg将多个3GP文件拼接成一个3GP文件,文件名中按日期YYYYMMDD匹配

来自分类Dev

使用php从目录中读取多个文件

来自分类Dev

根据文件名中是否存在特定字符串,将大约150多个(.csv)文件中的数据读取为两类

来自分类Dev

如何根据文件名创建多个目录并在linux中更改文件名?

来自分类Dev

重命名多个目录中的文件名

来自分类Dev

如何检查目录中的音频文件是否与数据库中存储的文件名匹配

来自分类Dev

使用骆驼数据库中的文件名读取文件内容

来自分类Dev

根据文件名在python中读取多个图像

来自分类Dev

如何使用python匹配文件中的文件名

来自分类Dev

Python 和 Pandas - 在不知道文件名的情况下读取目录中唯一的 CSV 文件

来自分类Dev

如何将多个目录中的多个.parquet文件读取到单个pandas数据框中?

来自分类Dev

如何在nodejs中使用fs从多个目录中获取文件名?

Related 相关文章

  1. 1

    读取多个目录中的文件,使用Node和Promises将文件名与数据匹配

  2. 2

    从目录中读取未知文件名

  3. 3

    如何使用Python更改目录中的多个文件名

  4. 4

    按文件名前缀顺序读取目录中的文件?

  5. 5

    Spark读取的文件夹目录,其文件名包含在结果数据框中

  6. 6

    将递增值写入子目录中与文件名匹配的所有文件

  7. 7

    “查找”或“ grep”文件名以匹配目录和子目录中的模式

  8. 8

    如何根据文件名和计数文件将文件移动到目录中

  9. 9

    读取文件并与文件名匹配

  10. 10

    如何使用Node.js将数据作为文件夹中的文件名写入CSV文件

  11. 11

    如果文件名和目录匹配 python

  12. 12

    Perl,使用带有部分这些文件名的数组来匹配目录中的文件

  13. 13

    使用 wget 下载与文件名中的扩展名和特定文本匹配的文件

  14. 14

    如何匹配不同目录中的文件名?(bash或python)

  15. 15

    将'diff'与不匹配的目录和文件名一起使用

  16. 16

    根据文件名与另一个文件匹配将文件移动到不同的目录中

  17. 17

    我可以使用什么正则表达式来匹配和替换多个文件名中的句号?

  18. 18

    18.04中使用bash和ffmpeg将多个3GP文件拼接成一个3GP文件,文件名中按日期YYYYMMDD匹配

  19. 19

    使用php从目录中读取多个文件

  20. 20

    根据文件名中是否存在特定字符串,将大约150多个(.csv)文件中的数据读取为两类

  21. 21

    如何根据文件名创建多个目录并在linux中更改文件名?

  22. 22

    重命名多个目录中的文件名

  23. 23

    如何检查目录中的音频文件是否与数据库中存储的文件名匹配

  24. 24

    使用骆驼数据库中的文件名读取文件内容

  25. 25

    根据文件名在python中读取多个图像

  26. 26

    如何使用python匹配文件中的文件名

  27. 27

    Python 和 Pandas - 在不知道文件名的情况下读取目录中唯一的 CSV 文件

  28. 28

    如何将多个目录中的多个.parquet文件读取到单个pandas数据框中?

  29. 29

    如何在nodejs中使用fs从多个目录中获取文件名?

热门标签

归档