NodeJS遍歷文件生產(chǎn)文件列表功能示例
本文實例講述了NodeJS遍歷文件生產(chǎn)文件列表功能。分享給大家供大家參考,具體如下:
功能需求:在工作中我們可能經(jīng)常需要知道項目中靜態(tài)文件列表發(fā)布,一個一個去檢索寫,那就太苦逼了。
要想知道里面的文件列表是不是很蛋疼,可能我們也會有dos tree去獲取。
這里分享一下,通過node,知道文件路徑,并配置遠(yuǎn)程路徑,直接copy,發(fā)布。
新建filelist.js 里面都有注釋,我就不哆嗦了.
var fs = require("fs"); //path模塊,可以生產(chǎn)相對和絕對路徑 var path = require("path"); //配置遠(yuǎn)程路徑 var remotePath = "/resource/fd/promote/201507/qixi/"; //獲取當(dāng)前目錄絕對路徑,這里resolve()不傳入?yún)?shù) var filePath = path.resolve(); //讀取文件存儲數(shù)組 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系統(tǒng)是”/“,Windows系統(tǒng)是”\“ 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); //返回指定文件名的擴(kuò)展名稱 //console.log(path.extname("pp/index.html")); if(filename == 'css' || filename == 'images'){ //var readurl = filePath+'/'+filename; //filePath+"/"+filename不能用/直接連接,Unix系統(tǒng)是”/“,Windows系統(tǒng)是”\“ // 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]; } //獲取文件數(shù)組 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())這種形式利用自身函數(shù),會報錯 //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("寫入成功"); }); }
當(dāng)我們執(zhí)行
node flielist.js
就會生產(chǎn)filelist.txt,文件里面就包含了我們想要的路徑。
有時,我們通常遇到刪除不了的文件,由于文件縱深太長導(dǎo)致 rm _rf也刪不了,但是我們通過nodejs可以辦到:
var fs = require("fs"); var path = require("path"); deleteFolderRecursive = function(url) { var files = []; //判斷給定的路徑是否存在 if( fs.existsSync(url) ) { //返回文件和子目錄的數(shù)組 files = fs.readdirSync(url); files.forEach(function(file,index){ // var curPath = url + "/" + file; var curPath = path.join(url,file); //fs.statSync同步讀取文件夾文件,如果是文件夾,在重復(fù)觸發(fā)函數(shù) if(fs.statSync(curPath).isDirectory()) { // recurse deleteFolderRecursive(curPath); // 是文件delete file } else { fs.unlinkSync(curPath); } }); fs.rmdirSync(url); }else{ console.log("給定的路徑不存在,請給出正確的路徑"); } }; deleteFolderRecursive("./grunt");
希望本文所述對大家nodejs程序設(shè)計有所幫助。
相關(guān)文章
Node.js和Vue的安裝與配置超詳細(xì)步驟(推薦)
使用VUE前端框架開發(fā),需要安裝Node.js和Vue.js,這篇文章主要給大家介紹了關(guān)于Node.js和Vue的安裝與配置超詳細(xì)步驟的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01使用Node.js find-up在父目錄中高效尋找文件與目錄
find-up 是一個小巧但功能強(qiáng)大的 Node.js 包,它能幫助我們實現(xiàn)這一需求,本文將深入探究如何使用 find-up 進(jìn)行有效搜索,并結(jié)合豐富的代碼演示幫助大家快速掌握其用法,需要的朋友可以參考下2024-05-05vscode安裝教程以及配置node.js環(huán)境全過程
這篇文章主要給大家介紹了關(guān)于vscode安裝教程以及配置node.js環(huán)境的相關(guān)資料,VSCode是一款由微軟開發(fā)的輕量級編輯器,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10手把手教你更優(yōu)雅的修改node_modules里的代碼
這篇文章主要給大家介紹了關(guān)于如何更優(yōu)雅的修改node_modules里的代碼的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2023-02-02輕松創(chuàng)建nodejs服務(wù)器(10):處理上傳圖片
這篇文章主要介紹了輕松創(chuàng)建nodejs服務(wù)器(10):處理上傳圖片,本文是系列文章的最后一篇,包含了一個完整的處理上傳圖片的例子,需要的朋友可以參考下2014-12-12