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

自己写了一个:

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. Java链表的一些操作:

    [还有一些其他的算法提]http://blog.csdn.net/WalkingInTheWind/article/category/906980 [转]http://blog.csdn.net/lu ...

  2. 设置git账号并生成新的ssh(切换电脑用户之后)

    1.设置账号 2.设置邮箱 3.检查确认 4. 5.check-----成功~

  3. selenium Chromediver

    Here we use wget to fetch the version number of the latest release, then plug the version into anoth ...

  4. centos5.5 mount new harddisk

    Linux 系统挂载数据盘 1.查看数据盘  使用"fdisk-l"命令查看 2. 对数据盘进行分区 执行"fdisk /dev/sdb"命令,对数据盘进行分区 ...

  5. tomcat 安全文件夹(Java之负基础实战)

    tomcat 解析网站的时候,会寻找一个文件叫  WEB-INF 这些文件外部无法访问

  6. php Excel文件导入 Spreadsheet_Excel_Reader

    刚刚开通博客,希望能够通过博客的形式记录自己的学习与成长,同时也希望能够和路上的同僚们多交流,共同进步 小白  ->  大神  go! go! go!! 先总结一下前几天写的Excel导入吧,希 ...

  7. 决策树ID3算法

    决策树 (Decision Tree)是在已知各种情况发生概率的基础上,通过构成 决策树 来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法 ...

  8. Cookie的一些用法

    Cookie的一些用法: package com.stono.servlet.listenerorder; import java.io.IOException; import java.io.Pri ...

  9. 蓝桥杯java试题《洗牌》

    问题描述 小弱T在闲暇的时候会和室友打扑克,输的人就要负责洗牌.虽然小弱T不怎么会洗牌,但是他却总是输. 渐渐地小弱T发现了一个规律:只要自己洗牌,自己就一定会输.所以小弱T认为自己洗牌不够均匀,就独 ...

  10. Hadoop学习笔记-008-CentOS_6.5_64_yum安装mysql

    ******************************卸载mysql***************************** 第一步,查看centos上是否已经安装了mysql数据库 # rp ...