欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

NodeJS遍歷文件生產(chǎn)文件列表功能示例

 更新時間:2017年01月22日 11:54:15   作者:小小平凡世界  
這篇文章主要介紹了NodeJS遍歷文件生產(chǎn)文件列表功能,結(jié)合實例形式分析了nodejs針對文件與目錄的遍歷、判斷及讀寫等相關(guā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ì)步驟(推薦)

    Node.js和Vue的安裝與配置超詳細(xì)步驟(推薦)

    使用VUE前端框架開發(fā),需要安裝Node.js和Vue.js,這篇文章主要給大家介紹了關(guān)于Node.js和Vue的安裝與配置超詳細(xì)步驟的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • NodeJS簡單實現(xiàn)WebSocket功能示例

    NodeJS簡單實現(xiàn)WebSocket功能示例

    這篇文章主要介紹了NodeJS簡單實現(xiàn)WebSocket功能,結(jié)合具體實例形式分析了nodejs實現(xiàn)WebSocket通信功能的客戶端與服務(wù)器端相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • 使用Node.js find-up在父目錄中高效尋找文件與目錄

    使用Node.js find-up在父目錄中高效尋找文件與目錄

    find-up 是一個小巧但功能強(qiáng)大的 Node.js 包,它能幫助我們實現(xiàn)這一需求,本文將深入探究如何使用 find-up 進(jìn)行有效搜索,并結(jié)合豐富的代碼演示幫助大家快速掌握其用法,需要的朋友可以參考下
    2024-05-05
  • NodeJS和瀏覽器中this關(guān)鍵字的不同之處

    NodeJS和瀏覽器中this關(guān)鍵字的不同之處

    這篇文章主要給大家介紹了關(guān)于NodeJS和瀏覽器中this關(guān)鍵字不同的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Node.js中調(diào)用mysql存儲過程示例

    Node.js中調(diào)用mysql存儲過程示例

    這篇文章主要介紹了Node.js中調(diào)用mysql存儲過程示例,本文在windows環(huán)境測試通過,本文一并給出了創(chuàng)建數(shù)據(jù)庫、錄入數(shù)據(jù)、創(chuàng)建存儲過程、調(diào)用存儲過程等例子,需要的朋友可以參考下
    2014-12-12
  • vscode安裝教程以及配置node.js環(huán)境全過程

    vscode安裝教程以及配置node.js環(huán)境全過程

    這篇文章主要給大家介紹了關(guān)于vscode安裝教程以及配置node.js環(huán)境的相關(guān)資料,VSCode是一款由微軟開發(fā)的輕量級編輯器,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • 手把手教你更優(yōu)雅的修改node_modules里的代碼

    手把手教你更優(yōu)雅的修改node_modules里的代碼

    這篇文章主要給大家介紹了關(guān)于如何更優(yōu)雅的修改node_modules里的代碼的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-02-02
  • 基于Node.js的WebSocket通信實現(xiàn)

    基于Node.js的WebSocket通信實現(xiàn)

    這篇文章主要介紹了基于Node.js的WebSocket通信實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 輕松創(chuàng)建nodejs服務(wù)器(10):處理上傳圖片

    輕松創(chuàng)建nodejs服務(wù)器(10):處理上傳圖片

    這篇文章主要介紹了輕松創(chuàng)建nodejs服務(wù)器(10):處理上傳圖片,本文是系列文章的最后一篇,包含了一個完整的處理上傳圖片的例子,需要的朋友可以參考下
    2014-12-12
  • node.js讀取文件到字符串的方法

    node.js讀取文件到字符串的方法

    這篇文章主要介紹了node.js讀取文件到字符串的方法,涉及readFileSync方法的使用技巧,需要的朋友可以參考下
    2015-06-06

最新評論