功能需求:在工作中我们可能经常需要知道项目中静态文件列表发布,一个一个去检索写,那就太苦逼了。
要想知道里面的文件列表是不是很蛋疼,可能我们也会有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); 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,文件里面就包含了我们想要的路径。
参考资料:
nodejs实现遍历文件夹并统计文件大小 http://nodeclass.com/articles/911572
新闻热点
疑难解答