本文实例讲述了NodeJS遍历文件生产文件列表功能。分享给大家供大家参考,具体如下:
功能需求:在工作中我们可能经常需要知道项目中静态文件列表发布,一个一个去检索写,那就太苦逼了。
要想知道里面的文件列表是不是很蛋疼,可能我们也会有dos tree去获取。
这里分享一下,通过node,知道文件路径,并配置远程路径,直接copy,发布。
新建filelist.js 里面都有注释,我就不哆嗦了.
var fs = require("fs"); //path模块,可以生产相对和绝对路径 var path = require("path"); //配置远程路径 var remotePath = "/resource/fd/promote/201507/qixi/"; //获取当前目录绝对路径,这里resolve()不传入参数 var filePath = path.resolve(); //读取文件存储数组 var fileArr = []; //读取文件目录 fs.readdir(filePath,function(err,files){ if(err){ console.log(err); return; } var count = files.length; //console.log(files); var results = {}; files.forEach(function(filename){ //filePath+"/"+filename不能用/直接连接,Unix系统是”/“,Windows系统是”\“ fs.stat(path.join(filePath,filename),function(err, stats){ if (err) throw err; //文件 if(stats.isFile()){ if(getdir(filename) == 'html'){ var newUrl=remotePath+filename; fileArr.push(newUrl); writeFile(fileArr); } // (getdir(filename) == 'html')&&(fileArr.push(filename);writeFile(newUrl)); // console.log("%s is file", filename); }else if(stats.isDirectory()){ // console.log("%s is a directory文件目录", filename); //返回指定文件名的扩展名称 //console.log(path.extname("pp/index.html")); if(filename == 'css' || filename == 'images'){ //var readurl = filePath+'/'+filename; //filePath+"/"+filename不能用/直接连接,Unix系统是”/“,Windows系统是”\“ // console.log(path.join(filePath,filename)); var name = filename; readFile(path.join(filePath,filename),name); } } }); }); }); //获取后缀名 function getdir(url){ var arr = url.split('.'); var len = arr.length; return arr[len-1]; } //获取文件数组 function readFile(readurl,name){ console.log(name); var name = name; fs.readdir(readurl,function(err,files){ if(err){console.log(err);return;} files.forEach(function(filename){ // console.log(path.join(readurl,filename)); fs.stat(path.join(readurl,filename),function(err, stats){ if (err) throw err; //是文件 if(stats.isFile()){ var newUrl=remotePath+name+'/'+filename; fileArr.push(newUrl); writeFile(fileArr) //是子目录 }else if(stats.isDirectory()){ var dirName = filename; readFile(path.join(readurl,filename),name+'/'+dirName); //利用arguments.callee(path.join())这种形式利用自身函数,会报错 //arguments.callee(path.join(readurl,filename),name+'/'+dirName); } }); }); }); } // 写入到filelisttxt文件 function writeFile(data){ var data = data.join("\n"); fs.writeFile(filePath+"/"+"filelist.txt",data+'\n',function(err){ if(err) throw err; console.log("写入成功"); }); }
当我们执行
node flielist.js
就会生产filelist.txt,文件里面就包含了我们想要的路径。
有时,我们通常遇到删除不了的文件,由于文件纵深太长导致 rm _rf也删不了,但是我们通过nodejs可以办到:
var fs = require("fs"); var path = require("path"); deleteFolderRecursive = function(url) { var files = []; //判断给定的路径是否存在 if( fs.existsSync(url) ) { //返回文件和子目录的数组 files = fs.readdirSync(url); files.forEach(function(file,index){ // var curPath = url + "/" + file; var curPath = path.join(url,file); //fs.statSync同步读取文件夹文件,如果是文件夹,在重复触发函数 if(fs.statSync(curPath).isDirectory()) { // recurse deleteFolderRecursive(curPath); // 是文件delete file } else { fs.unlinkSync(curPath); } }); fs.rmdirSync(url); }else{ console.log("给定的路径不存在,请给出正确的路径"); } }; deleteFolderRecursive("./grunt");
希望本文所述对大家nodejs程序设计有所帮助。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“NodeJS遍历文件生产文件列表功能示例”评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新动态
2024年11月09日
2024年11月09日
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]