当前位置: 首页 > 后端技术 > Node.js

Node.js手动递归遍历一个文件夹下的所有文件,使用npm包遍历

时间:2023-04-03 20:57:56 Node.js

如题所示,遍历文件夹下的所有文件,主要功能如下:传入一个路径,读取路径中的所有文件,遍历读取到的文件,判断当前文件是文件还是当前目录文件夹的是文件,打印出当前文件的绝对路径当前目录是文件夹,获取文件夹路径,继续读取路径下的文件,直到遍历目录下的所有文件一个简单的方法,使用rdnpm包https://www.npmjs.com/package/rd代码中用到的几个方法path.resolve(path)将一个路径或者一个路径段解析为绝对路径,返回解析后的路径字符串fs。readdir(path[,option],callback)读取目录下的文件,返回目录下的文件列表对象,如果输入是文件,则返回这个文件fs.stat(path,callback)获取文件信息对象Stats,包括文件大小,gid等信息stats.isFile()文件信息对象Stats判断当前文件是否为文件的方法afolder代码及注释如下:varfs=require('fs');varpath=require('path');//解析需要遍历的文件夹,我取E盘根目录为examplevarfilePath=path.resolve('E:');//调用文件遍历方法fileDisplay(filePath);/***文件遍历方式*@paramfilePath要遍历的文件路径*/functionfileDisplay(filePath){//根据文件路径读取文件,返回文件列表fs.readdir(filePath,function(err,files){if(err){console.warn(err)}else{//遍历读取的文件列表files.forEach(function(filename){//获取当前文件的绝对路径varfiledir=path.join(文件路径,文件名);//根据文件路径获取文件信息,返回一个fs.Stats对象fs.stat(filedir,function(eror,stats){if(eror){console.warn('Failedtogetfilestats');}else{varisFile=stats.isFile();//是一个文件varisDir=stats.isDirectory();//是一个文件夹if(isFile){console.log(filedir);}if(isDir){fileDisplay(filedir);//递归,如果是文件夹,继续遍历文件夹下的文件}}})});}});}运行结果为:E:jarsspring-framework-4.2.9.RELEASEdocsjavadoc-apiorgspringframeworkcacheinterceptorAbstractCacheInvoker.htmlE:jarsspring-framework-4.2.9.RELEASEdocsjavadoc-apiorgspringframeworkcacheinterceptorAbstractCacheResolver.htmlE:jarsspring-framework-4.2.9.jaRELEASEdocapiorgspringframeworkcacheinterceptorBasicOperation.htmlE:jarsspring-framework-4.2.9.RELEASEdocsjavadoc-apiorgspringframeworkcacheinterceptorCacheableOperation.htmlE:jarsspring-framework-4.2.9.RELEASEdocsjavadoc-apiorgspringframeworkcacheinterceptorBeanFactoryCacheOperationSourceAdvisor.html···········