看到一个问题: 找到文件夹下所有文件:

自己写了一个:

function walk(dir, ext, callback) {
ext = ext.charAt(0) === "." ? ext : `.${ext}`; fs.readdir(dir, (err, files) => {
files.forEach(f => {
fs.lstat(path.join(dir, f), (err, st) => {
if (st.isDirectory()) {
walk(path.join(dir, f), ext, callback);
} else {
if (path.extname(f) === ext) {
callback(null, f);
}
}
})
});
});
}

没有想到很好的办法,获得返回值。网上找了找:

function walk(dir) {

    let readDirAsync = Promise.promisify(fs.readdir);
let lstatAsync = Promise.promisify(fs.lstat); return readDirAsync(dir).then(files => { return Promise.all(files.map(f => {
let file = path.join(dir, f); return lstatAsync(file).then(stat => {
if (stat.isDirectory()) {
return walk(file);
} else {
return [file];
}
});
}));
}).then(files => {
return files.reduce((pre, cur) => pre.concat(cur));
});
} walk("~/home").then(x => console.log(x));

自己写成了一堆屎,好好学习。

漂亮的代码2:遍历文件夹目录,使用promise的更多相关文章

  1. File类创建删除功能的方法和File类遍历(文件夹)目录功能

    File类创建删除功能的方法 -public boolean createNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空文件 -public boolean delete(): ...

  2. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_8_File类遍历(文件夹)目录功能

    遍历这个目录下的文件 遍历一个文件就会报错’ 不存在的路径,也会报空指针异常 遍历可以获取到隐藏的文件夹和文件.常见一个隐藏的文件和文件夹 ListFiles私有类型的数组

  3. php快速无限遍历递归文件夹目录、子文件,支持绝对路径和相对路径,支持返回生成数组

    支持无限极遍历子文件及文件夹,支持绝对路径和相对路径! 函数说明:array glob ( string $pattern [, int $flags ] )功能:寻找与模式匹配的文件路径,返回包含匹 ...

  4. c bash 代码遍历文件夹下所有文件

    用C代码.bash实现代码遍历文件夹下所有文件 递归方式实现如下: void listdir(char *path) { DIR *ptr_dir; struct dirent *dir_entry; ...

  5. php遍历文件夹代码实现

    <?php //遍历文件夹 function my_scandir($dir){ $files = array(); if (is_dir($dir)){ if($handle = opendi ...

  6. [C#]递归遍历文件夹

    /// <summary> /// 递归获取文件夹目录下文件 /// </summary> /// <param name="pathName"> ...

  7. Android开发手记(21) 遍历文件夹

    我们在遍历文件夹的时候由于涉及到SD卡相关操作,所以我们需要添加如下权限: <uses-permission android:name="android.permission.WRIT ...

  8. java中File类应用:遍历文件夹下所有文件

    练习: 要求指定文件夹下的所有文件,包括子文件夹下的文件 代码: package 遍历文件夹所有文件; import java.io.File; public class Test { public ...

  9. 写个批处理脚本来帮忙干活--遍历文件夹&字符串处理

    这次打算写几篇关于脚本方面的博客,主要是记录一下 Gradle 脚本和批处理脚本的一些写法,方便后续查阅. 前言 平常开发过程中,一些较为重复的手工性工作,如果能让脚本来帮忙处理,自然是最好的,刚好之 ...

随机推荐

  1. javascript--hasOwnProperty()+isPrototypeof()+in方法

    1.hasOwnProperty():用来检测对象中是否包含给出的函数属性或者对象,但是无法检测出对象的原型链中是否包含给出的属性或对象--该属性或者对象必须在函数内部被声明 2.isPrototyp ...

  2. numpy 安装

    sudo apt-get install python-scipy sudo apt-get install python-numpy sudo apt-get install python-matp ...

  3. Python3基础 set() 集合 创建集合与特点:自动将重复合并掉 不支持索引

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  4. Python 一些常用模块的安装

    (1)python PIL(image)模块的安装 sudo apt-get install python-imaging

  5. Reactive 手机网络状态

    RAC([UIApplication sharedApplication], networkActivityIndicatorVisible)

  6. maven 第一次运行报错

    在大中国的网络环境下,使用一些国外的资源,是一件很痛苦的事情... 大概在好几个月以前,一个同事跟我说,没事的时候学习maven,现在公司项目都用这个做管理 还给了我电子书<Maven实战> ...

  7. Composer PHP依赖管理的新时代

    安装Composer Composer需要PHP 5.3.2+才能运行. $ curl -sS https://getcomposer.org/installer | php 这个命令会将compos ...

  8. 遗传算法GA

    遗传算法(Genetic Algorithms,GA)是一种全局优化方法,它借用了生物遗传学的观点,通过自然选择.遗传.变异等作用机制,实现种群中个体适应性的提高,体现了自然界中“物竞天择.适者生存” ...

  9. 让表格table呈现边框,不用给tr、td加边框的写法

    <table width="100%" cellspacing="1" cellpadding="1" bgcolor="# ...

  10. Angular - - ngIf、ngSwitch、ngHide/ngShow

    在组合这些ng指令写到一篇文章里的时候,基本是有规则的,野兽把功能相似相近的一类大多会组合到一起,方便理解和记忆. 这篇的三个指令也都是对DOM元素的操作,页面上显示/隐藏的判断,添加/移除的判断. ...