NodeJS遍歷文件生產(chǎn)文件列表功能示例
本文實(shí)例講述了NodeJS遍歷文件生產(chǎn)文件列表功能。分享給大家供大家參考,具體如下:
功能需求:在工作中我們可能經(jīng)常需要知道項(xiàng)目中靜態(tài)文件列表發(fā)布,一個(gè)一個(gè)去檢索寫,那就太苦逼了。

要想知道里面的文件列表是不是很蛋疼,可能我們也會(huì)有dos tree去獲取。
這里分享一下,通過(guò)node,知道文件路徑,并配置遠(yuǎn)程路徑,直接copy,發(fā)布。
新建filelist.js 里面都有注釋,我就不哆嗦了.
var fs = require("fs");
//path模塊,可以生產(chǎn)相對(duì)和絕對(duì)路徑
var path = require("path");
//配置遠(yuǎn)程路徑
var remotePath = "/resource/fd/promote/201507/qixi/";
//獲取當(dāng)前目錄絕對(duì)路徑,這里resolve()不傳入?yún)?shù)
var filePath = path.resolve();
//讀取文件存儲(chǔ)數(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ù),會(huì)報(bào)錯(cuò)
//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
就會(huì)生產(chǎn)filelist.txt,文件里面就包含了我們想要的路徑。

有時(shí),我們通常遇到刪除不了的文件,由于文件縱深太長(zhǎng)導(dǎo)致 rm _rf也刪不了,但是我們通過(guò)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("給定的路徑不存在,請(qǐng)給出正確的路徑");
}
};
deleteFolderRecursive("./grunt");
希望本文所述對(duì)大家nodejs程序設(shè)計(jì)有所幫助。
- 詳解Linux環(huán)境下NodeJS的安裝配置(HelloWorld)
- Docker + Nodejs + Kafka + Redis + MySQL搭建簡(jiǎn)單秒殺環(huán)境
- Linux下Nodejs安裝步驟(完整詳細(xì))
- 簡(jiǎn)單實(shí)現(xiàn)nodejs上傳功能
- 基于NodeJS+MongoDB+AngularJS+Bootstrap開發(fā)書店案例分析
- 學(xué)習(xí) NodeJS 第八天:Socket 通訊實(shí)例
- 解析NodeJs的調(diào)試方法
- 詳解NodeJs支付寶移動(dòng)支付簽名及驗(yàn)簽
- nodejs基礎(chǔ)知識(shí)
- NodeJS實(shí)現(xiàn)客戶端js加密
相關(guān)文章
Node.js和Vue的安裝與配置超詳細(xì)步驟(推薦)
使用VUE前端框架開發(fā),需要安裝Node.js和Vue.js,這篇文章主要給大家介紹了關(guān)于Node.js和Vue的安裝與配置超詳細(xì)步驟的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
NodeJS簡(jiǎn)單實(shí)現(xiàn)WebSocket功能示例
這篇文章主要介紹了NodeJS簡(jiǎn)單實(shí)現(xiàn)WebSocket功能,結(jié)合具體實(shí)例形式分析了nodejs實(shí)現(xiàn)WebSocket通信功能的客戶端與服務(wù)器端相關(guān)操作技巧,需要的朋友可以參考下2018-02-02
使用Node.js find-up在父目錄中高效尋找文件與目錄
find-up 是一個(gè)小巧但功能強(qiáng)大的 Node.js 包,它能幫助我們實(shí)現(xiàn)這一需求,本文將深入探究如何使用 find-up 進(jìn)行有效搜索,并結(jié)合豐富的代碼演示幫助大家快速掌握其用法,需要的朋友可以參考下2024-05-05
Node.js中調(diào)用mysql存儲(chǔ)過(guò)程示例
這篇文章主要介紹了Node.js中調(diào)用mysql存儲(chǔ)過(guò)程示例,本文在windows環(huán)境測(cè)試通過(guò),本文一并給出了創(chuàng)建數(shù)據(jù)庫(kù)、錄入數(shù)據(jù)、創(chuàng)建存儲(chǔ)過(guò)程、調(diào)用存儲(chǔ)過(guò)程等例子,需要的朋友可以參考下2014-12-12
vscode安裝教程以及配置node.js環(huán)境全過(guò)程
這篇文章主要給大家介紹了關(guān)于vscode安裝教程以及配置node.js環(huán)境的相關(guān)資料,VSCode是一款由微軟開發(fā)的輕量級(jí)編輯器,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10
手把手教你更優(yōu)雅的修改node_modules里的代碼
這篇文章主要給大家介紹了關(guān)于如何更優(yōu)雅的修改node_modules里的代碼的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02
基于Node.js的WebSocket通信實(shí)現(xiàn)
這篇文章主要介紹了基于Node.js的WebSocket通信實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
輕松創(chuàng)建nodejs服務(wù)器(10):處理上傳圖片
這篇文章主要介紹了輕松創(chuàng)建nodejs服務(wù)器(10):處理上傳圖片,本文是系列文章的最后一篇,包含了一個(gè)完整的處理上傳圖片的例子,需要的朋友可以參考下2014-12-12

