宝哥软件园

NodeJS遍历文件生产文件列表功能示例

编辑:宝哥软件园 来源:互联网 时间:2021-09-06

本文实例讲述了NodeJS遍历文件生产文件列表功能。分享给大家供大家参考,具体如下:

功能需求:在工作中我们可能经常需要知道项目中静态文件列表发布,一个一个去检索写,那就太苦逼了。

要想知道里面的文件列表是不是很蛋疼,可能我们也会有磁盘操作系统树去获取。

这里分享一下,通过节点,知道文件路径,并配置远程路径,直接收到,发布。

新建filelist.js里面都有注释,我就不哆嗦了。

var fs=require(' fs ');//路径模块,可以生产相对和绝对路径var path=require(' path ');//配置远程路径var远程路径='/resource/FD/promote/201507/Qixi/';//获取当前目录绝对路径,这里解析()不传入参数var文件路径=路径。resolve();//读取文件存储数组var文件arr=[];//读取文件目录fs.readdir(filePath,function(err,files){ if(err){ console。日志(err);返回;} var count=files . length//console . log(文件);定义变量结果={ };files.forEach(函数(文件名){//文件路径'/'文件名不能用/直接连接,Unix系统是"/",窗口系统是" " fs.stat(path.join(filePath,filename),function(err,stats){ if(err)throw err;//文件if(stats。isFIle()){ if(getdir(filename)=' html '){ var new URl=远程路径文件名;文件逮捕。推送(新URl);写文件(FileArr);}///(getdir(filename)=' html ')(文件arr。push(文件名);写文件(NewURl));//控制台。日志(" % s是文件",文件名);} else if(stats。isdirectory()){//控制台。日志(" % s "是目录文件目录,文件名);//返回指定文件名的扩展名称//控制台。日志(路径。扩展名(' PP/index。html ');if(filename==' CSS ' | | filename==' images '){//var read URL=file path '/' filename;//文件路径'/'文件名不能用/直接连接,Unix系统是"/",窗口系统是" "//控制台。日志(路径。join(文件路径,文件名));var名称=文件名;readFile(路径。加入(文件路径,文件名),名称);} } });});});//获取后缀名函数getdir(url){ var arr=url.split(' . ');可变长度返回arr[len-1];}//获取文件数组函数readFile(readurl,name){控制台。日志(名称);var name=namefs.readdir(readurl,function(err,files){ if(err){ console。日志(err);返回;} files.forEach(函数(文件名){ //console.log(路径。加入(readurl,文件名));fs.stat(path.join(readurl,filename),function(err,stats){ if(err)throw err;//是文件if(stats。isFIle()){ var new URl=remote path name/' filename;文件逮捕。推送(新URl);writeFile(fileArr) //是子目录} else if(stats。isdirectory()){ var dirName=filename;readFile(path.join(readurl,filename),name '/' dirName);//利用争论。calleer(路径。join())这种形式利用自身函数,会报错//参数。调用者(路径。加入(读取网址、文件名)、名称'/'目录名);} });});});}//写入到filelisttxt文件函数写文件(数据){ var data=data。联接(' n ');fs。Writefile(文件路径'/'文件列表。' txt ',数据n ',函数(错误){如果(错误)抛出错误;console.log('写入成功');});}当我们执行

node flielist.js就会生产filelist.txt,文件里面就包含了我们想要的路径。

有时,我们通常遇到删除不了的文件,由于文件纵深太长导致rm _rf也删不了,但是我们通过nodejs可以办到:

var fs=require(' fs ');var path=require(' path ');deleteFolderRecursive=函数(URL){ var files=[];//判断给定的路径是否存在if(fs.existsSync(url) ) { //返回文件和子目录的数组文件=fs。readdirsync(URL);files.forEach(函数(文件,索引){//var curPath=URL '/'文件;var curPath=path.join(url,file);//fs.statSync同步读取文件夹文件,如果是文件夹,在重复触发函数if(fs.statSync(curPath)).isDirectory()){//recurse deletefolderrestaw(curPath);//是文件删除文件} else { fs。取消同步链接(CurPath);} });fs。rmdirsync(URL);}else{ console.log('给定的路径不存在,请给出正确的路径');}};删除文件夹草书草书('。/grunt ');希望本文所述对大家nodejs程序设计有所帮助。

更多资讯
游戏推荐
更多+