Node.js 使用递归实现遍历文件夹中所有文件


Posted in Javascript onSeptember 18, 2017

如标题所示,遍历文件夹下的所有文件,主要功能如下:

传入一个路径,读取路径里面所有的文件
遍历读取的文件,判断当前文件是文件还是文件夹
当前目录为文件,打印出当前文件绝对路径
当前目录为文件夹,获取文件夹路径,继续读取路径下文件
遍历完目录中的所有文件为止
代码中用到的几个方法

path.resolve(path)

一个路径或路径片段解析成一个绝对路径,返回解析后的路径字符串
fs.readdir(path[,option],callback)

读取目录下面的文件,返回目录下的文件列表对象,如果传入的是个文件,返回这个文件

fs.stat(path,callback)

获取文件信息对象Stats,包括文件大小,gid等信息

stats.isFile()

文件信息对象Stats的一个方法,判断当前文件是不是一个文件

stats.isDirectory()

文件信息对象Stats的一个方法,判断当前文件是不是一个文件夹

代码和注释如下:

var fs = require('fs');
var path = require('path');

//解析需要遍历的文件夹,我这以E盘根目录为例
var filePath = path.resolve('E:');

//调用文件遍历方法
fileDisplay(filePath);

/**
 * 文件遍历方法
 * @param filePath 需要遍历的文件路径
 */
function fileDisplay(filePath){
  //根据文件路径读取文件,返回文件列表
  fs.readdir(filePath,function(err,files){
    if(err){
      console.warn(err)
    }else{
      //遍历读取到的文件列表
      files.forEach(function(filename){
        //获取当前文件的绝对路径
        var filedir = path.join(filePath,filename);
        //根据文件路径获取文件信息,返回一个fs.Stats对象
        fs.stat(filedir,function(eror,stats){
          if(eror){
            console.warn('获取文件stats失败');
          }else{
            var isFile = stats.isFile();//是文件
            var isDir = stats.isDirectory();//是文件夹
            if(isFile){
              console.log(filedir);
            }
            if(isDir){
              fileDisplay(filedir);//递归,如果是文件夹,就继续遍历该文件夹下面的文件
            }
          }
        })
      });
    }
  });
}

运行结果为:

E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\AbstractCacheInvoker.html
E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\AbstractCacheResolver.html
E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\BasicOperation.html
E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\CacheableOperation.html
E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\BeanFactoryCacheOperationSourceAdvisor.html
E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\AbstractFallbackCacheOperationSource.html
E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\CacheAspectSupport.CacheOperationContext.html
E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\CacheAspectSupport.html
E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\CacheAspectSupport.CacheOperationMetadata.html
E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\CacheErrorHandler.html
E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\CacheEvictOperation.html
E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\CacheInterceptor.html
E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\CacheOperation.html
E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\CacheOperationInvocationContext.html
E:\jars\spring-framework-4.2.9.RELEASE\docs\javadoc-api\org\springframework\cache\interceptor\CacheOperationInvoker.html
············

到这Node.js 遍历文件夹的实现方法就结束了,希望大家以后多多支持三水点靠木。

Javascript 相关文章推荐
基于jQuery的message插件实现右下角弹出消息框
Jan 11 Javascript
修复IE9&safari 的sort方法
Oct 21 Javascript
JavaScript内核之基本概念
Oct 21 Javascript
JavaScript 学习笔记之数据类型
Jan 14 Javascript
javascript如何写热点图
Dec 08 Javascript
jQuery.parseHTML() 函数详解
Jan 09 Javascript
jQuery对table表格进行增删改查
Dec 22 Javascript
node.JS md5加密中文与php结果不一致的解决方法
May 05 Javascript
vue实现页面加载动画效果
Sep 19 Javascript
JavaScript 五大常见函数
Mar 23 Javascript
详解Vue源码之数据的代理访问
Dec 11 Javascript
使用post方法实现json往返传输数据的方法
Mar 30 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
Sep 18 #Javascript
为什么我们要做三份 Webpack 配置文件
Sep 18 #Javascript
分析javascript中9 个常见错误阻碍你进步
Sep 18 #Javascript
十个免费的web前端开发工具详细整理
Sep 18 #Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
Sep 18 #Javascript
HTML5开发Kinect体感游戏的实例应用
Sep 18 #Javascript
聊聊那些使用前端Javascript实现的机器学习类库
Sep 18 #Javascript
You might like
深入php socket的讲解与实例分析
2013/06/13 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
jquery实现浮动的侧栏实例
2015/06/25 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
jquery实现网页定位导航
2016/08/23 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
python实现感知器
2017/12/19 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
pygame实现俄罗斯方块游戏(基础篇1)
2019/10/29 Python
举例讲解Python装饰器
2020/12/24 Python
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
Araks官网:纽约内衣品牌
2020/10/15 全球购物
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
2016年万圣节家长开放日活动总结
2016/04/05 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS