本文实例讲述了NodeJS遍历文件生产文件列表功能。分享给大家供大家参考,具体如下:
创新互联是一家专业提供隆昌企业网站建设,专注与成都网站制作、成都做网站、外贸营销网站建设、H5网站设计、小程序制作等业务。10年已为隆昌众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。功能需求:在工作中我们可能经常需要知道项目中静态文件列表发布,一个一个去检索写,那就太苦逼了。

要想知道里面的文件列表是不是很蛋疼,可能我们也会有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("写入成功");
});
}
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。