本文实例讲述了NodeJS遍历文件生产文件列表功能。分享给大家供大家参考,具体如下:
功能需求:在工作中我们可能经常需要知道项目中静态文件列表发布,一个一个去检索写,那就太苦逼了。
要想知道里面的文件列表是不是很蛋疼,可能我们也会有dos树去获取。
这里分享一下,通过节点,知道文件路径,并配置远程路径,直接复制、发布。
新建文件列表。js里面都有注释,我就不哆嗦了。
var fs=要求(fs);//路径模块,可以生产相对和绝对路径 var=路径要求(“路径”);//配置远程路径 var remotePath="/资源/fd/升级/201507/七夕节”;//获取当前目录绝对路径,这里解决()不传入参数 var filePath=path.resolve ();//读取文件存储数组 var fileArr=[];//读取文件目录 fs.readdir (filePath、功能(呃,文件){ 如果(err) { console.log(错); 返回; } var计算=files.length;//console.log(文件); var结果={}; files.forEach(函数(文件名){//filePath + " +文件名不能用/直接连接,Unix系统是“/?Windows系统是“\” fs.stat (path.join (filePath文件名)、功能(呃,统计){ 如果(err)把犯错;//文件 如果(stats.isFile ()) { 如果(getdir(文件名)==癶tml”) { var newUrl=remotePath +文件名; fileArr.push (newUrl); writeFile (fileArr); }//(getdir(文件名)==癶tml”),和(fileArr.push(文件名);writeFile (newUrl));//控制台。日志文件(“% s”,文件名); }else if (stats.isDirectory ()) {//控制台。日志(“% s是一个目录文件目录”,文件名);//返回指定文件名的扩展名称//console.log (path.extname (pp/index . html)); 如果(文件名==癱ss”| |文件名=='图像'){//var readurl=filePath +‘/?文件名;//filePath + " +文件名不能用/直接连接,Unix系统是“/?Windows系统是“\”//console.log (path.join (filePath文件名)); var的名字=文件名; readFile (path.join (filePath文件名),名称); } } }); }); });//获取后缀名 函数getdir (url) { var arr=url.split ('。'); var len=arr.length; 返回arr [len-1]; }//获取文件数组 readFile函数(readurl名称){ console.log(名称); var name=名称; fs.readdir (readurl、功能(呃,文件){ 如果(err) {console.log (err);回归;} files.forEach(函数(文件名){//console.log (path.join (readurl文件名)); fs.stat (path.join (readurl文件名)、功能(呃,统计){ 如果(err)把犯错;//是文件 如果(stats.isFile ()) { var newUrl=remotePath +名称+‘/?文件名; fileArr.push (newUrl); writeFile (fileArr)//是子目录 }else if (stats.isDirectory ()) { var目录名=文件名; readFile (path.join (readurl文件名),名字+‘/?目录名);//利用arguments.callee (path.join())这种形式利用自身函数,会报的错//arguments.callee (path.join (readurl文件名),名字+‘/?目录名); } }); }); }); }//写入到filelisttxt文件 函数writeFile(数据){ var data=https://www.yisu.com/zixun/data.join (“\ n”); fs.writeFile (filePath +“/?“filelist.txt”+“\ n”数据,函数(err) { 如果(err)把犯错; console.log(“写入成功”); }); } >之前当我们执行
节点flielist.js >之前就会生产filelist.txt,文件里面就包含了我们想要的路径。
有时,我们通常遇到删除不了的文件,由于文件纵深太长导致rm _rf也删不了,但是我们通过nodejs可以办到:
var fs=要求(fs); var=路径要求(“路径”); deleteFolderRecursive=function (url) { var文件=[];//判断给定的路径是否存在 如果(fs.existsSync (url)) {//返回文件和子目录的数组 文件=fs.readdirSync (url); files.forEach(函数(文件、索引){//var curPath=url + " +文件; var curPath=path.join (url、文件);//fs.statSync同步读取文件夹文件,如果是文件夹,在重复触发函数 如果(fs.statSync curPath .isDirectory()){//递归 deleteFolderRecursive (curPath);//是文件删除文件 其他}{ fs.unlinkSync (curPath); } }); fs.rmdirSync (url); 其他}{ console.log(“给定的路径不存在,请给出正确的路径”); } }; deleteFolderRecursive(“。/繁重”);NodeJS遍历文件生产文件列表功能示例