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 相关文章推荐
JavaScript 输入框内容格式验证代码
Feb 11 Javascript
js取消单选按钮选中示例代码
Nov 14 Javascript
使用pjax实现无刷新更改页面url
Feb 05 Javascript
Bootstrap每天必学之进度条
Nov 30 Javascript
js右下角弹出提示框示例代码
Jan 12 Javascript
jQuery表格的维护和删除操作
Feb 03 Javascript
Canvas实现动态的雪花效果
Feb 13 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
Jan 15 jQuery
详解Bootstrap 学习(一)入门
Apr 12 Javascript
详解一些适用于Node.js的命名约定
Dec 08 Javascript
js实现旋转木马轮播图效果
Jan 10 Javascript
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 Vue.js
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读取IMAP邮件
2006/10/09 PHP
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
PHP扩展编写点滴 技巧收集
2010/03/09 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
JavaScript静态的动态
2006/09/18 Javascript
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
IE图片缓存document.execCommand("BackgroundImageCache",false,true)
2011/03/01 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
2018/07/13 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
vue项目从node8.x升级到12.x后的问题解决
2019/10/25 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
Python 创建子进程模块subprocess详解
2015/04/08 Python
使用Python对Csv文件操作实例代码
2017/05/12 Python
浅谈python中的__init__、__new__和__call__方法
2017/07/18 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
Python中__slots__属性介绍与基本使用方法
2018/09/05 Python
关于多元线性回归分析——Python&SPSS
2020/02/24 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
质量承诺书范文
2014/03/27 职场文书
2016春节家属慰问信
2015/03/25 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
MongoDB日志切割的三种方式总结
2021/09/15 MongoDB
5道关于python基础 while循环练习题
2021/11/27 Python