91精产品自偷自偷综合官网版下载-91精产品自偷自偷综合下-91精品-91精品91久久久-91精品成人-91精品成人www

網站建設資訊

NEWS

網站建設資訊

Node.JavaScript文件系統中目錄的操作是怎樣的

這期內容當中小編將會給大家帶來有關Node.JavaScript文件系統中目錄的操作是怎樣的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創新互聯是一家專注于網站設計制作、網站制作與策劃設計,豐都網站建設哪家好?創新互聯做網站,專注于網站建設10多年,網設計領域的專業建站公司;建站業務涵蓋:豐都等地區。豐都做網站價格咨詢:13518219792

談到對目錄的操作,需要涉及到對目錄遍歷,其實目錄也是我們可以把它看成一顆樹。樹是一種非線性的數據結構,被用來存儲具有層級關系的數據,還被用來存儲有序列表,其中有一種特殊的樹:二叉樹。

有一種特殊的二叉樹叫二叉查找樹(BST),其他的特點是:相對較小的值保存在左節點中,較大的值保存在右節點中,因為這個特點使查找的效率特別高。

遍歷二叉查找樹有三種方式:中序,先序和后序

中序:按照節點上的鍵值,已升序訪問樹中所有節點,先訪問左子樹,在訪問根節點,最后訪問右子樹。

Node.JavaScript文件系統中目錄的操作是怎樣的

中序

先序:先訪問根節點,然后以同樣方式訪問左子樹和右子樹

Node.JavaScript文件系統中目錄的操作是怎樣的

先序

后序:先訪問葉子節點,從左子樹到右子樹,再到根節點

Node.JavaScript文件系統中目錄的操作是怎樣的

后序

還有兩種搜索方法:深度優先搜索和廣度優先搜索

深度優先搜索時從一條路徑的起始頂點開始一直到最后一個頂點,然后回溯,繼續追溯下一條路徑,直到到達最后的頂點,如此往復,知道沒有路徑為止。

Node.JavaScript文件系統中目錄的操作是怎樣的

深度優先搜索

廣度優先搜索是從第一個頂點開始,首先檢查最靠近第一個頂點的一層,再逐漸向下移動到離起始頂點最遠的一層。

Node.JavaScript文件系統中目錄的操作是怎樣的

廣度優先搜索

同步創建目錄

_fs.accessSync_是fs.access的同步方法用于檢查文件是否存在,檢查是否對文件是否有讀寫權限,當操作成功時返回值和異步方法執行成功相同,但操作失敗時會拋出異常。

_fs.mkdirSync_是同步創建目錄

話不多說,我們直接上代碼

let fs = require("fs"); let path = require("path") function mkdirSync(paths){     let arr = paths.split("/");     for(let i=0;i

異步創建目錄

function mkdir(paths,cb){     let arr = paths.split("/");     function next(index){        if(index>=arr.length) return cb();        let currentPath = arr.slice(0,index+1).join("/");        fs.access(currentPath,(err)=>{           if(err){                fs.mkdir(currentPath,()=>next(index+1))           }else{   //如果存在則不創建               next(index+1)           }        })     }     next(0) } mkdir("a/b/c/d/e",(err)=>{    console.log("創建完成"); })

Node.JavaScript文件系統中目錄的操作是怎樣的

創建目錄

深度刪除目錄(同步)

fs.stat() 方法用于查詢文件信息,可以用于查詢文件的大小、創建時間、權限等相關信息。fs.stat() 是異步方法,還有一個同步方法  fs.statSync(path)返回一個對象

思路是:一個分支上先刪除兒子再刪除自己,然后到另一個分支上刪除兒子再刪除自己。

function removeSync(dir){    let statObj = fs.statSync(dir)    if(statObj.isDirectory()){       let dirs = fs.readdirSync(dir)   //返回一個數組     //   console.log(dirs);      for(let i = 0;i

廣度刪除目錄(同步)

思路:通過while循環橫向列出所有文件的路徑,然后通過倒敘刪除。

while(current = arr[index++]){     let statObj = fs.statSync(current);     if(statObj.isDirectory()){         let dirs =fs.readdirSync(current);         dirs = dirs.map(d=>path.join(current,d)); //當前兒子的文件夾路徑         arr = [...arr,...dirs]     }  }

結果:[ 'a', 'a\b', 'a\b\c', 'a\b\c\d' ]

function wideSync(dir){    let arr = [dir];    let index = 0;    let current; //讀取的當前項目    while(current = arr[index++]){       let statObj = fs.statSync(current);       if(statObj.isDirectory()){           let dirs =fs.readdirSync(current);           dirs = dirs.map(d=>path.join(current,d)); //當前兒子的文件夾路徑           arr = [...arr,...dirs]       }    }    //倒敘刪除    for(let i = arr.length-1;i>=0;i--){        let current = arr[i]        let statObj = fs.statSync(current);        if(statObj.isDirectory()){            fs.rmdirSync(current)        }else{            fs.unlinkSync(current)        }    } } wideSync("a")

深度刪除目錄(串行異步)

function rmdirSeries(dir,callback){     fs.stat(dir,(err,statObj)=>{         if(statObj.isDirectory()){              //讀取文件內容              fs.readdir(dir,(err,dirs)=>{                  dirs = dirs.map(d=>path.join(dir,d))                  function next(index){                     if(index == dirs.length) return fs.rmdir(dir,callback)                     //先取出數組中的第一個  第一個刪除后  在刪第二個                     rmdirSeries(dirs[index],()=>next(index+1))                  }                  next(0)              })         }else{             fs.unlink(dir,callback)         }     }) } rmdirSeries("a",()=>{     console.log("刪除成功"); })

深度刪除目錄(并行異步)

function removeDirParalle(dir,callback){     fs.stat(dir,(err,statObj)=>{         if(statObj.isDirectory()){              //讀取文件內容              fs.readdir(dir,(err,dirs)=>{                  if(dirs.length == 0){                     return fs.rmdir(dir,callback)                  }                  dirs = dirs.map(d=>{                     let current = path.join(dir,d);                     //每個人刪除之后就調用done                            removeDirParalle(current,done);                     return current                  })                  //并發刪除                  let index = 0;                  function done(){                      if(++index == dirs.length){                         fs.rmdir(dir,callback)                      }                  }              })         }else{             fs.unlink(dir,callback)         }     }) } removeDirParalle("a",()=>{     console.log("刪除成功"); })

上述就是小編為大家分享的Node.JavaScript文件系統中目錄的操作是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創新互聯行業資訊頻道。


本文標題:Node.JavaScript文件系統中目錄的操作是怎樣的
網站網址:http://www.yuzhuanjia.cn/article/joidch.html
主站蜘蛛池模板: 午夜成人理论福利片 | 97SE亚洲国产综合自在线不卡 | 国产1024精品视频专区 | 97人人夜夜视频精品 | 91国内揄拍国内精品情侣对白 | 91大神精品全国在线观看 | 波多野结衣国产一区二区三区 | 97久久婷婷五月综合色d啪蜜芽 | 国产91丝袜在线播放网站 | 91av视频精品一区二区三区 | 国产成a人片在线观看 | a级大片免费观看 | www高清无码日韩 | av在线播放黄片 | 东京热一区 | 波多野结衣xxxxx在线播放 | 午夜影视在线观看免费 | 成年人精品视频 | 日韩av中文字幕1 | av一区二区三区蜜桃 | 国产91社区在线播放 | 日韩av免高清无码 | 午夜久久久精品一区二区三区 | 午夜电影av | av午夜久 | 日韩av一级精品 | 一区二区三区免费视频观看 | 韩国三级欧美三级国产三级 | 91男女无遮挡猛进猛出免费午夜久久 | 午夜少妇在线观看视频 | 69精品人人人人 | av无码一区二区三 | 91麻豆va国产精品久久久久久 | 高潮潮喷精品在线 | 91精品人妻少妇无码影院 | 午夜免费啪视 | 91精品国产高清在线水蜜桃 | 99久久无码一区人妻A片蜜 | 高清无码国产精 | 国产av剧情md精品麻豆 | 91精品手机国产免费 |