本文实例讲述了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程序设计有所帮助。
# NodeJS
# 遍历
# 文件
# 文件列表
# 详解Linux环境下NodeJS的安装配置(HelloWorld)
# Docker + Nodejs + Kafka + Redis + MySQL搭建简单秒杀环境
# Linux下Nodejs安装步骤(完整详细)
# 简单实现nodejs上传功能
# 基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
# 学习 NodeJS 第八天:Socket 通讯实例
# 解析NodeJs的调试方法
# 详解NodeJs支付宝移动支付签名及验签
# nodejs基础知识
# NodeJS实现客户端js加密
# 不能用
# 就会
# 都有
# 会有
# 那就
# 就不
# 不是很
# 要想
# 给大家
# 不存在
# 当我们
# 报错
# 太长
# 所述
# 在工作中
# 程序设计
# 是否存在
# 太苦
相关文章:
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
如何快速辨别茅台真假?关键步骤解析
黑客如何利用漏洞与弱口令入侵网站服务器?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
建站之星如何一键生成手机站?
,怎么在广州志愿者网站注册?
建站主机空间推荐 高性价比配置与快速部署方案解析
建站主机系统SEO优化与智能配置核心关键词操作指南
完全自定义免费建站平台:主题模板在线生成一站式服务
如何在Tomcat中配置并部署网站项目?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
常州自助建站工具推荐:低成本搭建与模板选择技巧
长沙企业网站制作哪家好,长沙水业集团官方网站?
建站之星备案流程有哪些注意事项?
深入理解Android中的xmlns:tools属性
C++时间戳转换成日期时间的步骤和示例代码
佛山企业网站制作公司有哪些,沟通100网上服务官网?
XML的“混合内容”是什么 怎么用DTD或XSD定义
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
如何快速搭建响应式可视化网站?
如何通过wdcp面板快速创建网站?
b2c电商网站制作流程,b2c水平综合的电商平台?
如何通过远程VPS快速搭建个人网站?
如何快速建站并高效导出源代码?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
建站之星伪静态规则如何正确配置?
如何快速打造个性化非模板自助建站?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
香港网站服务器数量如何影响SEO优化效果?
网站制作服务平台,有什么网站可以发布本地服务信息?
如何在云主机快速搭建网站站点?
如何打造高效商业网站?建站目的决定转化率
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
,如何利用word制作宣传手册?
,怎么用自己头像做动态表情包?
已有域名和空间如何搭建网站?
郑州企业网站制作公司,郑州招聘网站有哪些?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
制作网站的公司有哪些,做一个公司网站要多少钱?
如何快速查询网站的真实建站时间?
如何通过PHP快速构建高效问答网站功能?
潮流网站制作头像软件下载,适合母子的网名有哪些?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
如何在阿里云域名上完成建站全流程?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。